|
Механизм синхронного просмотра
Непосредственным предком компонентов
синхронного просмотра данных является класс TDBLookupControl,
который инкапсулирует список значений для просмотра
и сам механизм синхронного просмотра.
Как и в любом другом компоненте отображения
данных, в компонентах синхронного просмотра должны присутствовать
средства связывания с требуемым полем некоторого набора
данных (табл. 15.7). Это уже известные свойства:
Datasource — применяется для задания набора данных
через компонент TDataSource и
DataField — для определения требуемого
поля набора данных. Для синхронного просмотра следует
выбирать такое поле, значения которого не дают пользователю
полной информации об объекте и совпадают с ключевым
полем в таблице синхронного просмотра. Название этого
поля может не совпадать с названием ключевого поля,
но типы данных должны быть одинаковыми.
Примечание
При проектировании баз данных желательно,
чтобы такие поля все же носили одинаковые названия.
Теперь необходимо задать таблицу синхронного
просмотра, ключевое поле и поле синхронного просмотра.
Набор данных, содержащий указанные
поля, определяется через соответствующий rомпонент
TDataSource в свойстве ListSource.
Ключевое поле задается свойством KeyField.
Во время работы компонента в свойстве
KeyValue содержится текущее значение, которое
связывает между собой два набора данных.
Поле синхронного просмотра определяется
свойством ListField. Здесь можно
задавать сразу несколько полей, которые будут отображаться
в компоненте синхронного просмотра. Названия полей разделяются
точкой с запятой. Если свойство не определено, то в
компоненте будут отображаться значения ключевого поля.
Свойство ListFieldindex служит
для выбора основного поля из списка. Дело в том, что
компоненты синхронного просмотра поддерживают механизм
наращиваемого поиска, который позволяет быстро находить
нужное значение в больших списках. Свойство ListFieldindex
определяет, какое поле используется при наращиваемом
поиске. В компоненте TDBiookupComboBox
свойство ListFieldindex также
определяет, какое поле будет передано в строку редактирования.
Таблица 15.7. Основные
свойства, включающие механизм синхронного просмотра
|
|
|
|
property KeyFieid:
string;
|
|
Ключевое поле таблицы синхронного
просмотра
|
property KeyValue
: Variant;
|
|
Текущее значение ключевого
поля
|
property ListFieid:
string;
|
|
Поле или список полей синхронного
просмотра в таблице синхронного просмотра
|
property ListFieidindex:
Integer;
|
|
Номер основного поля синхронного
просмотра (используется, когда свойство ListField
содержит список полей)
|
property ListSource:
TDataSource;
|
|
Указывает на компонент TDataSource,
связанный с таблицей синхронного просмотра
|
property NullValueKey:
TShortCut;
|
|
Определяет комбинацию клавиш,
нажатие которых задает нулевое значение поля
|
В качестве примера рассмотрим приложение
Demo Lookup (рис. 15.5), в котором
с набором данных таблицы Orders
из базы данных DBDEMOS связаны
компоненты TDBGrid и TDBLооkupрСоmbоВох.
Во втором компоненте при перемещении по записям набора
данных отображается имя покупателя, оформившего текущий
заказ.
Рис. 15.5. Главная
форма проекта DemoLookup
Ключевые свойства компонента настроены
следующим образом.
Свойство Listsource
указывает на компонент custsource
типа TDataSource, который связан
с набором данных синхронного просмотра custTable.
Свойство ListFieid
указывает на поле company, все
значения которого доступны в списке компонента.
Свойство KeyField
указывает на поле custNo, которое
имеется в двух таблицах и по которому осуществляется
связь.
Рассмотрим основные свойства и методы
самих компонентов отображения данных, за исключением
тех, которые представлены в табл. 15.7 и полностью идентичны
для двух компонентов.
|