Поля
синхронного просмотра
При создании для исходного набора данных нового поля синхронного просмотра необходимо использовать перечисленные ниже свойства.
property LookupDataSet: TDataSet;
задает набор данных синхронного просмотра.
property LookupResultField: String;
представляет поле синхронного просмотра из набора данных LookupDataSet, данные из которого будут появляться в созданном поле.
property LookupKeyFields: String;
содержит поле (или поля) из набора данных синхронного просмотра, по значению которого выбирается значение из поля LookupResultField.
property KeyFields: String;
определяет поле (или поля) из исходного набора данных, для которого создается поле синхронного просмотра.
Для просмотра данных из поля синхронного просмотра можно использовать любые компоненты отображения данных, но естественно будет применить специальные компоненты синхронного просмотра, о которых рассказывается в гл. 15.
Кроме этого, очень удобно использовать поля синхронного просмотра в компоненте TDBGrid. Если такое поле связать с одной из колонок компонента, то для него автоматически заполняется список синхронного просмотра. Его элементы хранятся в свойстве PickList, которое имеется в любой колонке. Теперь пользователю достаточно выбрать нужную колонку в сетке и, щелкнув на появившейся в текущей ячейке кнопке, получить возможные значения для замены. Одновременно с изменением поля синхронного просмотра изменяется и ключевое поле (свойство KeyFields) исходного набора данных.
Примечание
При использовании полей синхронного просмотра в компоненте TDBGrid открывать набор данных синхронного просмотра необязательно. При этом свойство LookupCache, о котором речь пойдет ниже, обязательно должно иметь значение False.
Для идентификации полей синхронного просмотра можно использовать булевское свойство Lookup базового класса TField, которое принимает истинное значение для таких полей.
Свойство
property LookupCache: Boolean;
определяет режим использования специального буфера значений синхронного просмотра. Если это свойство истинно, то буфер работает.
Буфер основан на свойстве LookupList. При открытии исходного набора данных каждое поле синхронного просмотра получает свое значение, одновременно с этим, в соответствии со всеми имеющимися в исходном наборе данных значениями ключевого поля, заполняется и буфер синхронного просмотра. Впоследствии, при перемещении на другую запись, значение синхронного просмотра берется не из набора данных синхронного просмотра, а из буфера. Этот механизм при небольших объемах значений синхронного просмотра позволяет увеличить скорость работы с исходным набором данных, особенно в режиме удаленного доступа при низкоскоростных сетях.
При изменениях в наборе данных синхронного просмотра можно использовать метод
procedure RefreshLookupList;
который обновляет текущее значение поля и список значений в буфере.
Специально для разработчиков в базовый класс TField включено свойство
property Offset: Integer;
которое возвращает размер буфера в байтах.
Для создания поля синхронного просмотра удобнее всего воспользоваться Редактором полей компонента доступа к данным. После выбора команды New field из всплывающего меню в одноименном диалоге (см. рис. 13.3), помимо обычных действий, соответствующих созданию поля данных, необходимо задать значения свойств в группе Lookup definition. Элементы управления группы становятся доступны после выбора типа поля (радиокнопка Lookup в группе Field type). Группа Lookup definition включает следующие элементы: