Объекты полей, класс TField

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

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

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

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

Что же такое объект поля и какие возможности он предоставляет разработчику?

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

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

Рисунок 4 Иерархия классов полей

 

Компоненты отображения данных при работе с набором данных взаимодействуют именно с полями. Например, колонки компонента TDBCrid при отсутствии дополнительных настроек соответствуют расположению объектов полей в связанном наборе данных.

Класс TField является базовым (см. рис….), он инкапсулирует свойства и методы абстрактного поля данных. Именно от него происходят все классы типизированных полей. В реальной работе класс TField не используется, но его значение трудно переоценить. Практически все основные свойства классов типизированных полей унаследованы от класса TField без каких-либо изменений, а дополнительные свойства и методы обеспечивают работу конкретного типа данных.

Что касается методов-обработчиков событий, то четыре метода, определенные в классе TField, наследуются всеми потомками без изменения и дополнения.

Ниже приведены свойства и методы класса TField. Имя объекта содержит свойство

property Name: TComponentName;

При создании объекта поля на этапе разработки имя объекта складывается из имени соответствующего компонента набора данных и имени поля.

 

Свойство

property FieldName: String;

возвращает имя поля таблицы базы данных. Свойство

 

Название поля в таблице базы данных содержится в свойстве

property Origin: String;

Свойство

property FieldNo: Integer;

возвращает исходный порядковый номер поля в наборе данных.

Свойство

property DataType: TFieldType;

возвращает тип данных поля, а свойство

property DataSize: Integer;

содержит объем памяти, необходимый для хранения значения поля.

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

Свойство

property Value: Variant

всегда содержит значение, которое сохранено после последнего выполнения метода Post набора данных:

Свойство value является относительно медленным. И для преобразования текущего значения поля к необходимому виду можно применять целую группу быстрых свойств AS ..., которые содержат значение в определенном типе данных. Чаще всего используется свойство AsString, например, оно может применяться для представления числовых значений полей в элементах управления:

Editl.Text := Tablel.Fields[0].AsString;

 

Примечание

 

При работе со статическими объектами полей при передаче значений желательно использовать свойства из группы AS ..., т. к. неявное задание типа свойством Value может привести к ошибке преобразования данных типа Variant.

Перечислим все свойства из группы AS, типы данных, с которыми работают эти свойства, понятны из их названий.

property AsString : String;

property AsInteger : Integer;

property AsDateTime : TDateTime;

property AsBoolean: Boolean;

property AsCurrency :Currency;

property AsFloat : Double;

Если свойство

property CanModify: Boolean;

имеет значение False, значение поля нельзя редактировать. Однако это свойство является только средством для определения возможности редактирования.

Свойство

property Readonly: Boolean;

позволяет запретить редактирование (Readonly := True) или разрешить его (Readonly := False).