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