Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 7.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.04 Mб
Скачать

Var c, n :integer;

s, rs :string;

begin

Memo2.Clear,•

Queryl.First;

// Перебор всех записей набора данных

for n:=l to Queryl.RecordCount do begin

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

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

if n = 1 then begin

for c:=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 c:=0 to DBGridl.Columns.Count-1 do begin

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

rs:=rs+s;

end;

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

end;

end;

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

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

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

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

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

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

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

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

  • gbNone — рамки нет;

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

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

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

Это свойство принимает следующие значения:

  • goVertical — записи выводятся по горизонтали: слева направо и сверху вниз

(по умолчанию);

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

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

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

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

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

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

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

  • gkNull — пустое действие;

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

  • gkPriorTab — передача фокуса управления на следующий элемент формы;

  • gkNextTab — передача фокуса управления на предыдущий элемент формы;

  • gkLeft — переход на один столбец влево;

  • gkRight — переход на один столбец вправо;

  • gkUp — переход на одну панель вверх;

  • gkDown — переход на одну панель вниз;

  • gkScrollUp — переход на одну строку вверх;

  • gkScrollDown — переход на одну строку вниз;

  • gkPageUp — переход вперед на число записей, равное произведению числа строк и

столбцов панелей сетки (colCount * RowCount);

  • gkPageDown — переход назад на число записей, равное произведению числа строк и

столбцов панелей сетки;

  • gkHome — переход на первую запись;

  • gkEnd — переход на последнюю запись;

  • gkInsert — вставка новой записи методом insert и переход в режим редак­тирования;

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

  • gkDelete — удаление текущей записи;

  • gkCancel — отмена режима редактирования.

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

type TPaintPanelEvent = procedure (DBCtrlGrid: TDBCtrlGrid; Index: Integer) of object;

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