Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопрос 13-18.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
157.89 Кб
Скачать

Вопрос 13

Поля просмотра (Lookup - поля). Необходимость их использования, создание полей просмотра в приложении Delphi. Примеры.

Data — поле данных;

Calculated — вычисляемое поле

Lookup — поле синхронного просмотра.

Каждая таблица БД и, следовательно, каждый набор данных приложения имеет собственную структуру, которая определяется совокупностью полей. Каждое поле представляет собой описание типа данных, которому должно соответствовать значение, находящееся в записи на определенном месте. Иначе, полем можно назвать совокупность ячеек с данными определенного типа, расположенные в одном и том же месте в каждой записи набора данных, или попросту — это столбец в таблице.

В наборе данных приложения баз данных Delphi каждому полю соответствует собственный объект. Основой объектов полей является класс TField, который инкапсулирует основные свойства абстрактного поля, не зависящего от типа данных. От этого базового класса порождены другие классы, обеспечивающие функционирование реальных объектов полей, зависящих от типа данных.

очень удобно использовать поля синхронного просмотра в компоненте TDBGrid. Если такое поле связать с одной из колонок компонента, то для него автоматически заполняется список синхронного просмотра. Его элементы хранятся в свойстве pickList, которое, как известно, имеется в любой колонке. Теперь пользователю достаточно выбрать нужную колонку в сетке и, щелкнув на появившейся в текущей ячейке кнопке, получить возможные значения для замены. Одновременно с изменением поля синхронного просмотра изменяется и ключевое поле (свойство KeyFields) исходного набора данных.

Для идентификации полей синхронного просмотра можно использовать булевское свойство Lookup базового класса TField, которое принимает истинное значение для таких полей.

Свойство LookupCache определяет режим использования специального буфера значений синхронного просмотра. Если это свойство истинно, то буфер работает.

Буфер основан на свойстве LookupList. При открытии исходного набора данных каждое поле синхронного просмотра получает свое значение, одновременно с этим в соответствии со всеми имеющимися в исходном наборе данных значениями ключевого поля заполняется и буфер синхронного просмотра. Впоследствии при перемещении на другую запись значение синхронного просмотра берется не из набора данных синхронного просмотра, а из буфера. Этот механизм при небольших объемах значений синхронного просмотра позволяет увеличить скорость работы с исходным набором данных особенно в режиме удаленного доступа при низкоскоростных сетях.

При изменениях в наборе данных синхронного просмотра можно использовать метод RefreshLookupList, который обновляет текущее значение поля и список значений в буфере.

Специально для разработчиков в базовый класс TField включено свойство offset, которое возвращает размер буфера в байтах.

Для создания поля синхронного просмотра удобнее всего воспользоваться Редактором полей компонента доступа к данным. После выбора команды New field из всплывающего меню в одноименном диалоговом окне (см. рис. 17.2) помимо обычных действий, соответствующих созданию поля данных, необходимо задать значения свойств в группе Lookup definition. Элементы управления группы становятся доступны после выбора типа поля (переключатель Lookup в группе Field type).

В списке Dataset представлены все доступные в модуле наборы данных, из которых нужно выбрать набор данных синхронного просмотра (свойство Lookup DataSet). Список Result Fieldпозволяет выбрать поле синхронного просмотра (свойство LookupResuitField). Список Lookup Keys задает ключевое поле в наборе данных синхронного просмотра (свойство LookupKeyFields). Список Key Fields определяет ключевое поле исходного набора данных (свойство KeyFieids).

При создании для исходного набора данных нового поля синхронного просмотра необходимо использовать перечисленные ниже свойства.

  •  Свойство

property LookupDataSet: TDataSet; 

задает набор данных синхронного просмотра.

  •  Свойство

property LookupResultField: String;

представляет поле синхронного просмотра из набора данных LookupDataSet, данные из которого будут появляться в созданном поле.

  •  Свойство

property LookupKeyFields: String;

содержит поле (или поля) из набора данных синхронного просмотра, по значению которого выбирается значение из поля LookupResultField.

  • Свойство

property KeyFields: String;

определяет поле (или поля) из исходного набора данных, для которого создается поле синхронного просмотра.

Для просмотра данных из поля синхронного просмотра можно использовать любые компоненты отображения данных, но естественно будет применить специальные компоненты синхронного просмотра