Механизм синхронного просмотра. Компоненты TDBLookupListBox и TDBLookupComboBox.
Непосредственным предком компонентов синхронного просмотра данных является класс TDBLookupControl, который инкапсулирует список значений для просмотра и сам механизм синхронного просмотра.
Как и в любом другом компоненте отображения данных, в компонентах синхронного просмотра должны присутствовать средства связывания с требуемым полем некоторого набора данных (табл. 15.7). Это уже известные свойства: Datasource – применяется для задания набора данных через компонент TDataSource и DataField – для определения требуемого поля набора данных. Для синхронного просмотра следует выбирать такое поле, значения которого не дают пользователю полной информации об объекте и совпадают с ключевым полем в таблице синхронного просмотра. Название этого поля может не совпадать с названием ключевого поля, но типы данных должны быть одинаковыми.
Примечание
При проектировании баз данных желательно, чтобы такие поля все же носили одинаковые названия.
Теперь необходимо задать таблицу синхронного просмотра, ключевое поле и поле синхронного просмотра.
Набор данных, содержащий указанные поля, определяется через соответствующий компонент 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 | Определяет комбинацию клавиш, нажатие которых задает нулевое значение поля |