Статические и динамические поля
В Delphi предусмотрено два способа создания объектов полей.
Динамические поля используются программой в случае, если разработчик не создал для них объекты явным образом на этапе разработки. Каждый не заданный явно объект поля автоматически создается при открытии набора данных в соответствии со структурой связанной таблицы БД. Любой объект поля является прямым наследником класса TField, а его конкретный тип зависит от типа данных поля таблицы. При этом свойства динамического поля устанавливаются в соответствии с параметрами поля таблицы базы данных.
Компонент набора данных после подключения к таблице БД без дополнительных настроек использует только динамические поля. К свойствам и методам динамических полей можно обратиться программно, для этого следует использовать индексированное свойство Fields компонента доступа к данным, которое объединяет все поля набора данных (см. выше) или метод FieldByName.
Динамические поля используются в случаях, когда заданные характеристики полей в таблице базы данных полностью удовлетворяют разработчика и нет необходимости рассматривать какое-либо поле вне набора данных.
Статические поля создаются программистом на этапе разработки, их свойства доступны в Инспекторе объектов, а их названия можно выбрать из списка объектов активной формы в верхней части Инспектора объектов. Название статического объекта поля обычно складывается из названий таблицы и поля, например ordersCUSTNO.
Создаются статические объекты полей при помощи специализированного Редактора полей, который вызывается двойным щелчком на компоненте набора данных на форме или командой Fields Editor из всплывающего меню этого компонента.
Редактор полей представляет собой простой список уже созданных статических полей. Все управление осуществляется командами из всплывающего меню. В верхней части окна Редактора расположены кнопки навигатора для перемещения по набору данных, которые активны только при открытом наборе данных. Если набор данных имеет агрегатные поля данных (см. ниже), то они размещаются в отдельном списке в нижней части окна Редактора полей (рис. 13.2).
Рис. 13.2. Редактор полей с отдельным списком агрегатных полей
Рис. 13.3. Диалог создания нового статического поля Редактора полей набора данных
Добавить к списку статических полей новое поле, существующее в таблице БД, можно при помощи команды Add fields из всплывающего меню Редактора. Удаление элемента из списка осуществляется клавишей <Delete>. Перетаскиванием элементов списка при помощи мыши можно изменить их расположение. Таким образом можно создавать произвольные комбинации статических полей.
Примечание
Как только для набора данных создан хотя бы один статический объект поля, считается, что набор данных содержит только те поля, которые имеются в списке статических полей. Эту особенность можно использовать для искусственного ограничения структуры данных таблиц. Все поля набора данных расположены в том порядке, как это указано в списке Редактора полей, независимо от их реального положения в таблице базы данных.
Команда New field из всплывающего меню Редактора полей позволяет создать статическое поле, которое реально не существует в структуре данных таблицы (рис. 13.3). Для выбора типа поля используется группа радиокнопок Field Type:
- Data — поле данных;
- Calculated — вычисляемое поле;
- Lookup — поле синхронного просмотра.
Примечание
Для клиентских наборов данных многоуровневых приложений диалог создания нового поля позволяет выбрать два дополнительных типа поля — это агрегатные поля (радиокнопка Aggregate) и внутренние вычисляемые поля (радиокнопка InternalCalc).