Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 15-16.doc
Скачиваний:
8
Добавлен:
31.07.2019
Размер:
68.1 Кб
Скачать

Лабораторная работа №15-16 (4 часа)

Визуализация данных: компоненты для визуализации полей текущей записи, TDBCtrlGrid и TDBNavigator

Цели работы:

  1. Изучить все компоненты для визуализации полей текущей записи.

  2. Научиться использовать компонент TDBCtrlGrid.

  3. Изучить все свойства компонента TDBNavigator.

Теоретические сведения

Компоненты для визуализации полей текущей записи

Существует два способа визуализации данных: в виде таблицы (сетки) и в виде формы. В предыдущих лабораторных мы рассматривали первый способ, а сейчас рассмотрим второй. Данный способ представляет собой обычную форму, на которую помещены компоненты визуализации полей текущей записи.

Для нормальной работы любого из описываемых компонентов нужно определить два его свойства: поместить в свойство DataSource имя связанного с набором данных компонента источника TDataSource, а в свойство DataField – имя отображаемого поля.

Компонент TDBText

C помощью компонента TDBText можно отображать текстовые представления различных полей НД в том виде, в котором эти поля отображаются в сетке TDBGrid. Фактически компонент повторяет функциональность метки TLabel за тем исключением, что его текст формируется автоматически на основании значения некоторого поля текущей записи. Отображаемый компонентом текст нельзя изменять и, следовательно, с его помощью нельзя редактировать связанное с ним поле. Разумеется, тип отображаемого поля должен быть приводимым к текстовому значению.

Компонент TDBEdit

Компонент TDBEdit позволяет редактировать значение поля текущей записи НД. Он повторяет функциональность компонента TEdit, позволяющего корректировать текстовое значение переменной, но источником данных и их приемником для него служит поле НД. Тип этого поля должен быть приводимым к текстовому значению.

При вводе в компонент TDBEdit программа автоматически следит за тем, чтобы оно было совместимо по формату с полем НД. Ввод неверных значений блокируется. Например, если в компонент, связанный с полем типа дата-время, попытаться поместить произвольный текст, будет возбуждена исключительная ситуация.

Компонент TDBCheckBox

Компонент TDBCheckBox обладает функциональностью стандартного флажка TCheckBox, но источником данных и их приемником для него служит поле НД, которое может быть логическим или символьным. В последнем случае необходимо соответствующим образом установить значения текстовых свойств ValueChecked и ValueUnchecked компонента TDBCheckBox. Например:

DBCheckBox1.ValueChecked := 'True;Yes;On;Да;Д';

DBCheckBox1.ValueUnchecked := 'False;No;Off;Нет;Н';

Компонент TDBRadioGroup

Компонент TDBRadioGroup служит для представления фиксированного набора возможных значений поля при помощи группы переключателей. Этот компонент обладает функциональность стандартного переключателя TRadioGroup, но источником данных и их приемником для него служит поле НД. Количество и названия вариантов возможных значений поля определяются в свойстве Items. Компонент будет связывать установку того или иного переключателя с соответствующим значением поля. Для этого список возможных значений определяется свойством Values.

Списочные компоненты

Визуализирующие компоненты типа TDBListBox, TDBComboBox, TDBLookupComboBox, TDBLookupListBox имеют связанные с ним списки TString и поэтому дальше объединяются общим названием списочные компоненты БД.

Списочные компоненты предназначены для отображения состояния конкретного поля текущей записи, а так же для ввода в это поле нового значения (но не для навигации по НД!). Первые два компонента имеют первоначально пустые списки, которые программист должен заполнить перед тем как они станут доступным пользователю. Компоненты TDBLookupXXXX формируют свои списки значениями, взятыми из поля другого НД, и не нуждаются в из заполнении. В это и заключается вся разница между TDBXXXX и TDBLookupXXXX.

Компоненты TDBListBox и TDBComboBox могут отображать текущее значение связанного с ними поля только в том случае, если это значение совпадает с одним из списочных значений компонента, два других отображают любое значение, даже если этого значения нет в связанных с компонентами списках. Точно так же вводить новое значение компоненты XXXXListBox могут только из своих списков, в то время как компоненты XXXXComboBox в модификациях csSimple и csComboBox содержат текстовую строку для ввода значения, которого нет в списке.

Компоненты TDBLookupXXXX могут использоваться двумя способами: если в редактируемом НД есть нужное подстановочное поле, для них, как и для других рассматриваемых компонентов, достаточно определить лишь свойства DataSource и DataField, причем в последнем указать имя подстановочного поля; если в НД нет подстановочного поля, в свойство DataSource помещается имя компонента-источника, связанного с редактируемым НД, в свойство DataField – имя поля с шифром (ссылочного поля) этого НД, в свойство ListSource – имя компонента источника, связанного с подстановочным НД, в ListField – имя отображаемого (результирующего) поля и, наконец, в KeyField – имя индексного поля, на которое ссылается поле DataField редактируемого НД.

Компонент tdbMemo

Компонент TDBMemo предназначен для отображения и редактирования memo-полей (полей комментариев), которые служат для хранения в ТБД многострочных текстов. Компонент TDBMemo является аналогом компонента TMemo с той разницей, что источником данных для него служит memo-поле НД. В связи с этим его свойства, методы и события в основном совпадают со свойствами, методами м событиями компонента TMemo.

Специфичным для компонента являются свойства DataSource и DataField (в которые следует поместить соответственно имена компонента-источника и memo-поля), а также свойства AutoDisplay и Field.

Если в свойство AutoDisplay помещено значение true, любые изменения memo-поля автоматически отображаются в компоненте, а при открытии НД компонент будет отображать содержимое memo-поля текущей записи. Если false – содержимое memo-поля заменяется его названием, а для просмотра или редактирования его значения нужно либо дважды щелкнуть на компоненте, либо выделить его и нажать клавишу Enter.

Свойство Field открывает доступ к memo-полю.

При корректировке текста в компоненте TDBMemo НД, к которому принадлежит поле, автоматически переводится в состояние dsEdit.

Компонент tdbRichEdit

Компонент TDBRichEdit позволяет просматривать и корректировать информацию в memo-поле форматированного комментария. Текст форматированного комментария может содержать фрагменты, набранные различным шрифтом, размером, стилем, цветом и т.д. В отличие от компонента TDBMemo, который позволяет работать только с однородным (неформатированным) текстом, компонент TDBRichEdit умеет интерпретировать специальные символы разметки текста в формате RTF. Многие свойства, методы и события аналогичны по назначению одноименным свойствам, методам и событиям компонента TRichEdit. Специфичные для компонента свойства DataSource, DataField, AutoDisplay, Field работают аналогично одноименным свойствам компонента TDBMemo.

Компонент tdbCtrlGrid

Как уже говорилось ранее, существуют два способа визуализации данных: таблицы и формы. В таблица пользователь может видеть одновременно несколько записей НД, что облегчает ему контроль за данными и выбор необходимой записи. При использовании формы пользователь в каждый момент видит на экране лишь одну запись НД, но зато имеет простой доступ к любому его полю, в том числе многострочному, или графическому. Компонент TDBCtrlGrid в известной мере сочетает в себе удобства обоих способов: он представляет собой таблицу, каждая ячейка которой отображается в виде формы.

Для работы с компонентом необходимо поместить его на форму, связать с компонентом TDataSource, который, в свою очередь, связать с каким-либо НД, и затем разместить на нем необходимые компоненты для работы с полями БД – TDBText, TDBEdit, TDBCheckBox и т.п. Компоненты для работы с полями базы данных требуется разместить в верхней строке компонента TDataSource или, если количество столбцов ColCount компонента больше одного, в левой верхней ячейке компонента.

Во время прогона программы расположение компонентов в верхней строке (верхней левой ячейке) компонента TDBCtrlGrid и их состав будут реплицированы на все оставшиеся строки (ячейки).

Приемы работы с TDBCtrlGrid аналогичны приемам работы с TDBGrid . Текущая строка (ячейка) выделяется пунктирным прямоугольником. Для навигации по сетке компонента используются те же клавиши, что и для TDBGrid. Для вставки новой записи необходимо нажать клавишу Insert или попытаться перейти на с последней записи в НД вниз на одну строку (для сетки с одним столбцом). Для удаления используют сочетание клавиш <Ctrl+Delete>.

Для компонента определен метод DoKey. Действие, выполняемое методом определяется параметром Key:

  • gkNull – ничего не делать;

  • gkEditMode – перевести компонент в режим редактирования;

  • gkPriorTab – передать фокус ввода предыдущей ячейке;

  • gkNextTab - передать фокус ввода следующей ячейке;

  • gkLeft - передать фокус ввода ячейке слева;

  • gkRight - передать фокус ввода ячейке справа;

  • gkUp - передать фокус ввода ячейке сверху;

  • gkDown - передать фокус ввода ячейке снизу;

  • gkScrollUp – прокрутить сетку на строку вверх;

  • gkScrollDown - прокрутить сетку на строку вниз;

  • gkPageUp - прокрутить сетку на экран вверх;

  • gkPageDown - прокрутить сетку на экран вниз;

  • gkHome – передать фокус ввода первой ячейке;

  • gkEnd – передать фокус ввода последней ячейке;

  • gkInsert – перевести компонент в режим редактирования;

  • gkAppend - перевести компонент в режим добавления записи;

  • gkDelete - перевести компонент в режим удаления;

  • gkCancel – восстановить режим просмотра.