по значениям поля набора данных 1 глава




В простом и комбинированном списках перечень возможных значений поля формируется программистом и в общем случае не зависит от значений записей наборов данных. Иногда это может оказаться неудобным и привести к ошибкам ввода или выбора. В Delphi имеются компоненты DBLookupListBox и DBLookupComboBox, которые также предназначены для выбора значения в спи­ске или непосредственного ввода значения в поле редактирования (только для DBLookupComboBox). Во многом эти компоненты похожи на простой список DBListBox и комбинированный список DBComboBox соответственно и отличают­ся от них только способом формирования списка возможных значений.

Принципы работы с компонентами DBLookupComboBox и DBLookupListBox практически такие же, как с полем выбора, которое было рассмотрено в главе 5. Основное отличие заключается в том, что поле выбора создается с помощью Редактора полей, и его основные свойства задаются в специальном окне, а в случае указанных компонентов для списка используется один из них (DBLookupComboBox или DBLookupListBox), а свойства устанавливаются, как правило, через Инспектор объектов.

Компонент DBLookupComboBox (или DBLookupListBox) связывается с полем "своего" набора данных через свойства DataSource и DataField, а список фор­мируется с помощью свойств ListSource (типа TDateSource) и DataField (типа string), указывающих на второй набор данных и его поле, используемое для заполнения списка.

В свойстве KeyField типа string указывается поле второго набора данных, зна­чение которого заносится в поле, связанное с компонентом списка.

Представление записей в табличном виде

Для вывода записей набора данных в табличном виде удобно использовать сет­ку, представленную в Delphi компонентом DBGrid. Внешний вид сетки соответ­ствует внутренней структуре таблицы БД и набора данных, при этом строке сет­ки соответствует запись, а столбцу — поле.

С помощью сетки пользователь управляет набором данных, поля которого в ней отображаются. Для навигации по записям и их просмотра используются полосы прокрутки и клавиши перемещения курсора. Для перехода в режим редактиро­вания поля достаточно установить на него курсор и нажать любую алфавитно-цифровую клавишу. Переход в режим вставки новой записи выполняется нажа­тием клавиши <Insert>, после чего можно заполнять поля. Вставка записи про­исходит в том месте, где находится указатель текущей записи. Изменения, сде­ланные при редактировании или добавлении записи, подтверждаются нажатием клавиши <Enter>, или переходом к другой записи, или отменяются нажатием


140


Часть II. Технологии доступа к данным


клавиши <Esc>. Для удаления записи следует нажать комбинацию клавиш <Ctrl>+<Delete>.

Характеристики сетки

Несмотря на то что по своему виду сетка DBGrid похожа на сетку stringGrid, между ними есть значительные различия. Так, у сетки stringGrid можно уста­навливать через соответствующие свойства число ее строк и столбцов. У сетки DBGrid числом строк управлять нельзя, т. к. она отображает все записи, имею­щиеся в наборе данных.

Основным свойством сетки является свойство Columns типа TDBGridColumns, которое представляет собой массив (коллекцию) объектов Column типа TColumn, описывающих отдельные столбцы сетки.

Свойство Selectedindex типа integer задает номер текущего столбца в масси­ве Columns, а свойство SelectedField указывает на объект типа TField, кото­рому соответствует текущий столбец сетки.

Свойство FieldCount типа integer, доступное во время выполнения програм­мы, содержит число видимых столбцов сетки, а свойство Fields [index: integer] типа TField позволяет получить доступ к отдельным столбцам. Ин­декс определяет номер столбца в массиве столбцов и принимает значения в ин­тервале 0..FieldCount - 1.

Свойства Color и FixedColor типа TColor задают цвета сетки и ее фиксиро­ванных элементов соответственно. По умолчанию свойство Color имеет значе­ние ciwindow (цвет фона Windows), а свойство FixedColor — значение clBtnFace (цвет кнопки).

Свойство TitleFont типа TFont определяет шрифт, используемый для вывода заголовков столбцов.

Доступ к параметрам сетки (например, для настройки) возможен через свойство Options типа TGridOptions. Это свойство представляет собой множество и принимает комбинации следующих значений:

□ dgEditing (пользователю разрешается редактирование данных в ячейках);

□ dgAlwaysShowEditor (сетка не блокирует режим редактирования);

□ dgTitles (отображаются заголовки столбцов);

□ dgindicator (для текущей записи в начале строки выводится указатель);

□ dgColumnResize (пользователь может с помощью мыши изменять размер столбцов и перемещать их);

□ dgColLins (между столбцами выводятся разделительные вертикальные линии);

□ dgRowLines (между строками выводятся разделительные горизонтальные линии);

□ dgTabs (для перемещения по сетке можно использовать клавиши <ТаЬ> и <Shift>+<Tab>);


Глава 6. Визуальные компоненты для работы с данными


141


П dgRowSelect (пользователь может выделить целую строку); при установке этого значения игнорируются значения dgEditing и dgAlwaysShowEditor;

□ dgAlwaysShowSelection (ячейка остается выделенной, даже если сетка теря­ет фокус);

□ dgConfirmDelete (при удалении строки выдается запрос на подтверждение операции);

□ dgCancelOnExit (добавленные к сетке пустые строки (записи) при потере сеткой фокуса не сохраняются в наборе данных);

□ dgMultiSelect (в сетке можно одновременно выделить несколько строк).

По умолчанию свойство Options содержит комбинацию значений [dgEditing, dgTitles, dglndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit].

При щелчке на ячейке с данными генерируется событие OnCellclick, а щелчок на заголовке столбца вызывает событие OnTitleClick. Оба события имеют тип

TDBGridClickEvent, описываемый так:

type TDBGridClickEvent = procedure (Column: TColumn) of object;

Параметр Column представляет собой столбец, на котором был произведен щелчок.

При перемещении фокуса межцу столбцами сетки инициируются события OnColEnter и OnColExit типа TNotifyEvent, первое из которых возникает при получении столбцом фокуса, а второе — при его потере.

Если свойство Options содержит значение dgColumnResize, то пользователь может с помощью мыши перемещать столбцы сетки. При таком перемещении

генерируется событие OnColumnMoved типа TMovedEvent, описываемого как:

type TMovedEvent = procedure (Sender: TObject; Fromlndex, Tolndex: Longint) of object;

Параметры Fromlndex и Tolndex указывают индексы в массиве столбцов сетки, соответствующие предыдущему и новому положению перемещенного столбца соответственно.

Сетка DBGrid способна автоматически отображать в своих ячейках информа­цию, но при необходимости программист может выполнить и собственное ото­бражение сетки. Это может понадобиться в случае, когда желательно выделить ячейку или столбец с помощью цвета или шрифта, а также вывести в ячейке, кроме текстовой, и графическую информацию, например, небольшой рисунок. Для программной реализации отображения сетки используется обработчик со­бытия OnDrawColumnCell типа TDrawColumnCellEvent, которое возникает при прорисовке любой ячейки. Тип события OnDrawColumnCell описан так:

type TDrawColumnCellEvent = procedure (Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;

State: TGridDrawState) of object;


142


Часть II. Технологии доступа к данным


Параметр Rect содержит координаты ограничивающего ячейку прямоугольника, параметр DataCol определяет номер прорисовываемого столбца в массиве столбцов сетки, а параметр Column является объектом прорисовываемого столбца. Параметр state задает состояние ячейки и принимает комбинации следующих значений:

□ golSelected (ячейка находится в выбранном диапазоне);

□ gdFocused (ячейка имеет фокус ввода);

□ gdFixed (ячейка находится в фиксированном диапазоне).

Порядок вызова события OnDrawColumnCell зависит от значения свойства DefaultDrawing типа Boolean. Если свойство имеет значение True (по умол­чанию), то перед генерацией события OnDrawColumnCell в ячейке отображается фон и выводится информация. Затем вокруг выбранной ячейки рисуется прямо­угольник выбора. Если свойство DefaultDrawing имеет значение False, то сразу вызывается событие OnDrawColumnCell, в обработчике которого следует разместить операции по прорисовке области сетки.

Рассмотрим пример программной прорисовки сетки:

// Свойство DefaultDrawing должно быть установлено в значение True

procedure TForml.DBGridlDrawColumnCell(Sender: TObj ect; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

var r:TRect;

s:string;

begin

s:= Tablel.FieldByName(Column.FieldName).AsString;

r:= Rect;

if (Column.FieldName = 'Debt') then begin

DBGridl.Canvas.Brush.Color:= clRed;

DBGridl.Canvas.Font.Color:= clYellow;

DBGridl.Canvas.Font.Style:= [fsltalic];

DBGridl.Canvas.FillRect(Rect);

if Tablel.FieldByName(Column.FieldName).AsCurrency > 1000

then begin

ImageListl.Draw(DBGridl.Canvas, Rect.Left + 2, Rect.Top + 2, 2);

r.Left:= r.Left + ImageListl.Width + 4;

end;

DBGridl.Canvas.TextOut(r.Left, r.Top +2, s);

end

else begin

DBGridl.Canvas.Brush.Color:= clWhite;

DBGridl.Canvas.FillRect(Rect);

DBGridl.Canvas.Font.Color:= clBlack;


Глава 6. Визуальные компоненты для работы с данными


143


DBGridl.Canvas.Font.Style:= []; DBGridl.Canvas.TextOut(r.Left, r.Top +2, s); end; end;

Здесь для столбца сетки, который соответствует полю Debt (Задолженность) набора данных, устанавливается красный цвет фона, а данные выводятся жел­тым цветом и курсивом. Кроме того, если задолженность превышает юоо (руб­лей или других денежных единиц), то в поле Debt соответствующей записи сле­ва от числа выводится рисунок, находящийся в компоненте imageListl (третий по счету). Список с рисунками можно подготовить заранее при разработке при­ложения и загрузить динамически во время выполнения программы.

При прорисовке ячеек используется свойство Canvas элемента DBGridl, а также параметр Rect. Если обработчик события OnDrawColumnCell является общим для нескольких компонентов DBGrid, то при отображении их ячеек вместо названия конкретного компонента (в примере это DBGridl) необходимо ставить конструк­цию (Sender as TDBGrid) ИЛИ TDBGrid (Sender). Например, инструкция

(Sender as TDBGrid).Canvas.Font.Color:= clRed;

устанавливает красный цвет для символов ячеек сетки, указываемой параметром

Sender.

Столбцы сетки

Отдельный столбец Column сетки представляет собой объект типа TColumn. По умолчанию для каждого поля набора данных, связанного с компонентом DBGrid, автоматически создается отдельный столбец, и все столбцы в сетке дос­тупны. Такие столбцы являются динамическими. Для создания статических столбцов используется специальный Редактор столбцов. Если хотя бы один столбец сетки является статическим, то динамические столбцы уже не создаются ни для одного из оставшихся полей набора данных. Причем в наборе данных доступными являются статические столбцы, а остальные столбцы считаются отсутствующими. Изменить состав статических столбцов можно с помощью Ре­дактора столбцов на этапе разработки приложения.

Взаимодействие между динамическими и статическими столбцами, а также Ре­дактором столбцов аналогично взаимодействию между динамическими и статическими полями набора данных и Редактором полей.

Характеристики и поведение сетки и ее отдельных столбцов во многом опреде­ляются полями набора данных (а также соответствующими объектами типа

TField), для которых создаются объекты типа TColumn.

Функционирование динамических столбцов зависит от свойств объекта поля: при изменении свойств объекта типа TField соответственно изменяются свой-


144


Часть II. Технологии доступа к данным


ства объекта типа TColumn. К примеру, динамический столбец получает от поля такие характеристики, как имя и ширину.

Достоинством статических столбцов является то, что для их объектов можно установить значения свойств, отличные от свойств соответствующего поля и не зависящие от него. Например, если для некоторого статического столбца уста­новить свое имя, то оно не будет меняться даже в случае, если с этим столбцом связывается другое поле набора данных. Кроме того, объекты типа TColumn статических столбцов создаются на этапе разработки приложения, и их свойства доступны через Инспектор объектов.

Для запуска Редактора столбцов (рис. 6.3) можно вызвать контекстное меню компонента DBGrid и выбрать в нем пункт Columns Editor. Редактор столбцов можно вызвать также щелчком мыши на свойстве Columns в окне Инспектора объектов.

В заголовке Редактора столбцов выводится составное имя массива столбцов, например, DBGridl.Columns. Под заголовком находится панель инструментов, видимостью которой можно управлять с помощью пункта Toolbar контекстного меню Редактора столбцов. Большую часть Редактора столбцов занимает список статических столбцов, при этом столбцы перечисляются в порядке их создания (этот порядок может отличаться от исходного порядка полей в наборе данных).

(_____ ЗамечаниеJ

При изменении порядка столбцов сетки автоматически изменяется порядок связан­ных с ними полей набора данных, что необходимо учитывать при доступе к полям по номерам объектов типа TField, а не по именам объектов.

Рис. 6.З. Диалоговое окно Редактора столбцов

Первоначально список статических столбцов пуст, показывая тем самым, что все столбцы сетки являются динамическими. Редактор столбцов позволяет:

□ создать статический столбец;

□ удалить статический столбец;

□ изменить порядок следования статических столбцов.

Кроме того, для любого выбранного в Редакторе статического столбца (объекта типа TColumn) через Инспектор объектов можно задать или изменить его свой-


Глава 6. Визуальные компоненты для работы с данными


145


ства и определить обработчики его событий. Это допустимо потому, что соот­ветствующие статическим столбцам объекты типа TColumn доступны уже на этапе разработки приложения.

Статический столбец можно создать следующими способами:

□ нажатием кнопки L ^ | панели инструментов Редактора столбцов;

□ выбором пункта Add контекстного меню Редактора столбцов;

□ нажатием клавиши <Insert>.

В любом случае к списку добавляется строка, соответствующая новому статиче­скому столбцу. В левой части строки содержится номер этого столбца в массиве столбцов, в правой — имя поля набора данных, с которым связан столбец. Сра­зу после добавления к списку столбец не связан ни с одним полем и вместо имени поля указывается TColumn. При выполнении приложения подобный столбец окажется пустым. Чтобы связать столбец с каким-либо полем, необхо­димо установить значение его свойства FieldName.

Для добавления в список статических столбцов, соответствующих всем полям

набора данных, следует нажать кнопку К^ панели инструментов Редактора столбцов или выбрать в его контекстном меню пункт Add All Fields.

Для удаления из списка статических столбцов необходимо их выделить, после чего выполнить одно из следующих действий:

□ нажать кнопку q^ панели инструментов Редактора столбцов;

□ выбрать пункт Delete контекстного меню Редактора столбцов;

□ нажать клавишу < Delete >.

Вновь создаваемые статические столбцы получают значения свойств по умолча­нию, зависящие также от полей набора данных, с которыми эти столбцы связаны.

Если значения свойств были изменены через Инспектор объектов и требуется восстан овить их первоначальные значения, то это можно выполнить нажатием

или выбором пункта Restore Defaults (Восстановить параметры по умолчанию) контекстного меню Редактора столбцов.

Объект столбца доступен через свойство Columns типа TDBGridColumns. При проектировании приложения свойства этого объекта (т. е. столбца, выбранного в списке Редактора столбцов) доступны через Инспектор объектов.

Перечислим наиболее важные свойства объекта столбца.

□ Alignment типа TAlignment — управляет выравниванием значений в ячей­
ках столбца и может принимать следующие значения:

• taLeft Justify (выравнивание по левой границе);

• taCenter (выравнивание по центру);

• taRightJustify (выравнивание по правой границе).

□ Count типа integer — указывает число столбцов сетки.

кнопки


146


Часть II. Технологии доступа к данным


П Field типа TField — определяет объект поля набора данных, связанный со столбцом.

□ FieldName типа string — указывает имя поля набора данных, с которым связан столбец. При установке этого свойства с помощью Инспектора объек­тов значение можно выбирать в списке.

□ PickList типа TStrings — представляет собой список для выбора заноси­мых в поле значений. Текущая ячейка совместно со списком PickList обра­зуют своего рода компонент ComboBox или DBComboBox. Если для столбца сформирован список выбора, то при попытке редактирования ячейки этого столбца справа появляется стрелка, при нажатии которой список раскрыва­ется и позволяет выбрать одно из значений. При этом можно ввести в ячейку любое допустимое значение.

□ Title типа TColumnTitle — представляет собой объект заголовка столбца. В свою очередь этот объект имеет такие свойства, как Caption, Alignment, Color и Font, определяющие название, выравнивание, цвет и шрифт заголовка соответственно.

Свойства столбца, управляющие форматированием, видимостью или возможно­стью модификации значений, не отличаются от соответствующих свойств поля.

Рассмотрим пример по установке свойств для столбцов сетки.

В наборе данных определено пять полей, для каждого из которых с помощью Редактора столбцов создан статический столбец. Текст процедуры, выполняемой при создании формы приложения, имеет следующий вид:

// Значения этих свойств можно установить также через Инспектор объектов

procedure TForial.FormCreate(Sender: TObject);

begin

// Скрытие первого столбца

DBGridl.Columns[0].Visible:= False;

// Установка параметров второго столбца

DBGridl.Columns[1].Title.Caption:= 'Дата поступления';

DBGridl.Columns[1].Title.Alignment:= taCenter;

DBGridl.Columns[1].Alignment:= taCenter;

// Скрытие третьего столбца

DBGridl.Columns[2].Visible:= False;

// Установка параметров четвертого столбца

DBGridl.Columns[3].Title.Caption:= 'Количество';

DBGridl.Columns[3].Title.Alignment:= taCenter;

DBGridl.Columns[3].Alignment:= taRightJustify;

// Устан*овка параметров пятого столбца

DBGridl.Columns[4].Title.Caption:= 'Примечание ';

DBGridl.Columns[4].Title.Alignment:= taCenter;

DBGridl.Columns[4].Title.Alignment:= taLeftJustify;


Глава 6. Визуальные компоненты для работы с данными


147


DBGridl.Columns[4].PickList.Clear;

DBGridl.Columns[4].PickList.Add('Товар на складе');

DBGridl.Columns[4].PickList.Add('Некондиция');

DBGridl.Columns[4].PickList.Add('Срок реализации не лимитирован');

end;

Первый и третий столбцы устанавливаются невидимыми, для остальных столб­цов задаются название заголовка и его выравнивание, а также выравнивание значений. Кроме того, для пятого столбца, соответствующего полю примечания, создан список выбора. Установка свойств столбцов произведена при создании формы, эти же действия могут быть проделаны и через Инспектор объектов. При выполнении приложения форма имеет вид, показанный на рис. 6.4.

Рис. 6.4. Установка свойств для столбцов сетки


Рис. 6.5. Преобразование значений записей набора данных в текст

В дальнейшем при использовании компонента DBGrid свойства его столбцов из­меняться не будут, при этом состав и порядок следования столбцов сетки будут соответствовать составу и порядку следования полей набора данных, а в качестве заголовков столбцов сетки будут отображаться названия полей набора данных.


148


Часть II. Технологии доступа к данным


Рассмотрим еще один пример, в котором осуществляется преобразование зна­чений записей набора данных в текст.

В качестве набора данных используется компонент Queryl, SQL-запрос для ко­торого вводится в многострочное поле редактирования Memol. Выполнение за­проса происходит при нажатии кнопки Выполнить SQL (Buttonl). Полученные в результате выполнения запроса записи отображаются в сетке DBGridl. При нажатии кнопки Преобразовать (Button2) происходит последовательный про­смотр полей всех записей набора данных (сетки) и преобразование их в текст, который помещается в многострочное поле редактирования Мето2 (рис. 6.5).

Ниже приведен код обработчиков событий нажатия кнопок.

// Выполнение SQL-запроса

procedure TForml.ButtonlClick(Sender: TObject); begin

Queryl.Close;

Queryl.SQL.Assign(Memol.Lines); Queryl.Open; end;

// Преобразование значений записей набора данных в текст procedure TForml.Button2Click(Sender: TObject); var c, n:integer;

s, rs:string; begin

Memo2.Clear; Queryl.First;

// Перебор всех записей набора данных for n:= 1 to Queryl.RecordCount do begin

rs:= ''; s:= '';

// Чтение названий столбцов сетки

if n = 1 then begin

for с:= 0 to DBGridl.Columns.Count - 1 do begin

s:= DBGridl.Columns[c].FieldName + ' ';

rs:= rs + s;

end; Memo2.Lines.Add(rs); rs:= ''; s:= ''; end;

// Чтение значений полей текущей записи for с:= 0 to DBGridl.Columns.Count - 1 do begin

s:= DBGridl.Columns[c].Field.AsString + ' ';

rs:= rs + s;

end;


Глава 6. Визуальные компоненты для работы с данными


149


Memo2.Lines.Add(rs); Queryl.Next; end; end;

Для доступа к названиям и значениям полей набора данных использованы свойства FieldName, Count и Field столбцов сетки. При необходимости текст из поля редактирования Memo 2 можно скопировать в буфер.

Использование модифицированной сетки

Кроме компонента DBGrid, для управления записями таблицы предназначен компонент DBCtrlGrid — модифицированная сетка. Компонент DBCtrlGrid представляет собой несколько отдельных панелей, на которых располагаются визуальные компоненты (рис. 6.6).

Рис. 6.6. Вид компонента DBCtrlGrid при проектировании приложения

Модифицированная сетка DBCtrlGrid может отображать несколько одинако­вых панелей, но текущей является только одна из них. При проектировании приложения визуальные компоненты, например, DBEdit или DBtext, распола­гаются на одной (верхней) панели. Когда визуальные компоненты помещаются на панель модифицированной сетки, у них автоматически устанавливается нуж­ное значение свойства DataSource, взятое из аналогичного свойства модифици­рованной сетки. При выполнении приложения компоненты, размещенные на одной панели, дублируются на другие панели сетки. На приведенной на рис. 6.7 сетке расположены четыре компонента DBEdit — для названия, единицы изме­рения, цены товара и примечания, компонент DBtext — для количества товара на складе и надпись Label с текстом Наличие -.

Число панелей, одновременно видимых в модифицированной сетке, определяется свойством PanelCount типа Integer, доступным для чтения во время выполнения


150


Часть II. Технологии доступа к данным


приложения. Свойство Panelindex типа integer указывает текущую панель, на которой находится просматриваемая запись набора данных. Установив это свойст­во в соответствующее значение, можно сделать текущей нужную панель.

Рис. 6.7. Вид компонента DBCtrlGrid при выполнении приложения

Все панели сетки имеют одинаковые размеры, определяемые свойствами PanelHeight (высота) и PanelWidth (ширина) типа Integer. Каждая панель может иметь рамку, что определяется свойством PanelBorder типа

TDBCtrlGridBorder, принимающим следующие значения:

□ gbNone (рамки нет);

□ gbRaised (трехмерная приподнятая рамка) — по умолчанию.


Рис. 6.8. Вид сетки с панелями в две строки и два столбца

Число одновременно видимых строк и столбцов сетки задают свойства RowCount и ColCount типа integer, значения которых по умолчанию равны трем и одно­му. Это соответствует трем панелям в одном столбце и наличию вертикальной полосы прокрутки. При задании более одного столбца у сетки появляется гори­зонтальная полоса прокрутки (рис. 6.8).


Глава 6. Визуальные компоненты для работы с данными


151


Свойство Orientation типа TDBCtrlGridOrientation при наличии нескольких столбцов определяет порядок размещения записей на панелях. Это свойство при­нимает следующие значения:

□ goVertical (записи выводятся по горизонтали: слева направо и сверху вниз) — по умолчанию;

□ goHorizontal (записи выводятся по вертикали: сверху вниз и слева направо).

На панели может отображаться прямоугольник фокуса (прямоугольная рамка), указывающий на текущую запись. Его отображением управляет свойство ShowFocus типа Boolean, которое по умолчанию имеет значению True, что со­ответствует отображению прямоугольника фокуса. Значение False свойства ShowFocus скрывает прямоугольник фокуса.

Свойства AllowDelete и Allowlnsert типа Boolean управляют возможностями удаления текущей и вставки новой записи в набор данных, записи которого ото­бражаются на панелях сетки. По умолчанию оба свойства имеют значение True, и пользователь имеет возможность удалять и вставлять записи.

Свойство EditMode типа Boolean определяет, находится ли набор данных в режиме редактирования (значение True). Пользователь управляет его значением с помощью действий с визуальными компонентами, разработчик может уста­навливать его программно.

С помощью мыши и клавиатуры пользователь управляет записями набора дан­ных посредством компонента DBCtrlGrid так же, как и в случае компонента

DBGrid.

Программисту предоставляются дополнительные возможности управления на­бором данных, связанные с использованием метода DoKey. Процедура DoKey (Key: TDBCtrlGridKey) выполняет различные операции, которые задает пара­метр Key, принимающий следующие значения:

□ gkNull (пустое действие);

□ gkEditMode (переключение значения свойства EditMode);

□ gkPriorTab (передача фокуса ввода следующему элементу формы);

□ gkNextTab (передача фокуса ввода предыдущему элементу формы);

□ gkLeft (переход на один столбец влево);

□ gkRight (переход на один столбец вправо);

□ gkUp (переход на одну панель вверх);

□ gkDown (переход на одну панель вниз);

□ gkScrollUp (переход на одну строку вверх);

□ gkScrollDown (переход на одну строку вниз);

□ gkPageUp (переход вперед на число записей, равное произведению числа строк и столбцов панелей сетки Coicount * RowCount);


152


Часть II. Технологии доступа к данным


П gkPageDown (переход назад на число записей, равное произведению числа строк и столбцов панелей сетки);

□ gkHome (переход на первую запись);

□ gkEnd (переход на последнюю запись);

□ gkinsert (вставка новой записи методом insert и переход в режим редак­тирования);

□ gkAppend (вставка новой записи методом Append и переход в режим редак­тирования);

□ gkDelete (удаление текущей записи);

□ gkCancel (отмена режима редактирования).

При необходимости разработчик может выполнить программную прорисовку па­нелей, использовав для этого событие OnPaintPanel типа TPaintPanelEvent, возникающее непосредственно перед отображением панелей. Тип этого события описан как



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: