Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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

Begin

Begin

Begin

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

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

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

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

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:=taLeftJustifу;

DBGridl.Columns[4].PickList.Clear;

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

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

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

end;

 

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

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

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

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

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

 

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

 

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

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

procedure TForml.ButtonlClick(Sender: TObject);

Queryl.Close;

Queryl.SQL.Assign(Memol.Lines);

Queryl.Open;

end;

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

procedure TForml.Button2Click(Sender: TObject);

var c, n:integer;

s, rs:string;

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 можно скопировать в буфер.

Кроме компонента 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 можно выполнить и другие действия, например, обработку связан­ных с панелью данных.

 

5. Использование навигационного интерфейса

 

Для управления набором данных можно использовать навигатор, который обес­печивает соответствующий интерфейс пользователя. По внешнему виду и орга­низации работы навигатор похож на мультимедийный проигрыватель. В Delphi навигатор представлен компонентом DBNavigator (рис. 8.9).


Рис. 8.9. Навигатор

Навигатор содержит кнопки, обеспечивающие выполнение различных операций с набором данных путем автоматического вызова соответствующих методов. Со­став видимых кнопок определяет свойство visibieButtons типа TButtonSet, при­нимающее комбинации следующих значений (в скобках указан вызываемый метод):

o nbFirst — перейти к первой записи (First);

o nbPrior — перейти к предыдущей записи (Prior);

o nbNext — перейти к следующей записи (Next);

o nbLast — перейти к последней записи (Last);

o nbInsert — вставить новую запись (Insert);

o nbDelete — удалить текущую запись (Delete);

o nbEdit — редактировать текущую запись (Edit);

o nbPost — утвердить результат изменения записи (Post);

o nbCancel — отменить изменения в текущей записи (Cancel);

o nbRefresh — обновить информацию в наборе данных (Refresh).

 

По умолчанию в навигаторе видимы все кнопки.

Метод BtnClick(Index: TNavigateBtn) служит для имитации нажатия кнопки, заданной параметром index. Тип TNavigateBtn этого параметра идентичен типу TButtonSet, возможные значения соответствующего параметра которого пере­числены выше. В качестве примера приведем строку кода:

DBNavigator.BtnClick(nbNext);

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

При нажатии кнопки nbDelete может появляться диалоговое окно, в котором пользователь должен подтвердить или отменить удаление текущей записи. По­явлением окна подтверждения управляет свойство ConfirmDelete типа Boolean, по умолчанию имеющее значение True, т. е. окно подтверждения выводится. Если при отладке приложения установить этому свойству значение False, то запись будет удаляться без подтверждения.

Свойство Flat типа Boolean управляет внешним видом кнопок. По умолчанию оно имеет значение False, и кнопки отображаются в объемном виде. При уста­новке свойству Flat значения True кнопки приобретают плоский вид, соответ­ствующий современному стилю.

Подсказку для отдельной кнопки можно установить с помощью свойства Hints типа TString. По умолчанию список подсказок содержит текст на английском языке, который можно заменить на русский, вызвав Строковый редактор (String list editor). Подсказка для навигатора устанавливается через свойство Hint типа String. Напомним, что для отображения подсказок нужно присвоить значение True свойству ShowHint, по умолчанию имеющему значение False.


На практике часто вместо навигатора используются отдельные кнопки Button или BitBtn, при нажатии на которые вызываются соответствующие методы управления набором данных. Например, в процедурах:

procedure TForml.ButtonlClick(Sender: TObject);

<== предыдущая лекция | следующая лекция ==>
Столбцы сетки | Interface. Вывод графических изображений
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 527; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.