
- •1. Наборы данных
- •Var I: integer;
- •1.1. Состояния наборов данных
- •If not CheckBoxl.Checked then Abort;
- •If not CheckBoxl.Checked then begin
- •If CheckBox2.Checked then
- •If CheckBox2.Checked then begin
- •1.2. Режимы наборов данных
- •1.3. Доступ к полям
- •Var n: integer;
- •Var X: integer;
- •Var X: integer;
- •1.4. Особенности набора данных Table
- •If OpenDialogl.Execute then begin
- •Var n: integer;
- •If Editl.CanFocus then Editl.SetFocus;
- •1.5. Особенности набора данных Query
- •Interface
- •Implementation
- •2. Объекты поля
- •2.1 Редактор полей
- •2.2. Операции с полями
- •Var X: integer;
- •Var s: string;
- •X: real;
- •Var s: string;
- •X: real;
- •If not Tablel.Fields[2].IsValidChar(Editl.Text[1]) then
- •If (TablelCode.Required) and (TablelCode.IsNull)
- •3. Источник данных
- •Var n: integer;
- •1. Отображение и редактирование значения логического поля
- •2. Отображение и выбор значения поля
- •3. Отображение и выбор значения поля из списка
- •3.1. Простой и комбинированный списки
- •3.2. Списки, сформированные по значениям поля набора данных
- •4. Представление записей в табличном виде
- •4.1 Характеристики сетки
- •Var r :tRect;
- •4.2. Столбцы сетки
- •Var c, n :integer;
- •4.3. Использование модифицированной сетки
- •5. Использование навигационного интерфейса
- •6. Вывод графических изображений
- •Interface
- •Implementat ion
- •If OpenPictureDialogl.Execute then
- •If SavePictureDialogl.Execute then
- •7. Построение диаграмм
- •Var n: integer;
2.2. Операции с полями
Через объект типа TField разработчик может:
обратиться к полю и его значению;
проверить тип и значение поля;
отформатировать значение поля, отображаемое или редактируемое в визуальных компонентах.
При этом динамические и статические поля имеют одинаковые свойства, события и методы, с помощью которых можно управлять этими объектами при выполнении приложения. В связи с тем, что статические поля определяются на этапе разработки, многие их свойства доступны через Инспектор объектов.
Доступ к значению поля
Объект поля, как и любой другой объект, имеет имя (название), определяемое его свойством Name типа String. Имя объекта Field зависит от того, является ли поле динамическим или статическим. По умолчанию для динамического поля имя объекта Field совпадает с именем соответствующего физического поля таблицы БД, для которого создан объект, и не может быть изменено. Имя статического поля является составным и по умолчанию образуется путем слияния имен набора данных и имени физического поля таблицы БД. Например, если для физического поля Name набора данных Table1 с помощью Редактора полей создано статическое поле, то оно получит имя Table1Name. Программист может изменить это имя через Инспектор объектов, когда соответствующее статическое поле выбрано в Редакторе полей.
В отличие от имени объекта Field, свойство FieldName типа String содержит имя физического поля, заданное при создании таблицы. Не следует путать свойства Name и FieldName, они обозначают разные объекты и в общем случае могут не совпадать.
Пример обращения к полю:
Tablel.FieldByName('Number').DisplayLabel:='Количество';
TablelNumber.DisplayLabel: ='Количество' ;
Здесь для статического поля Number возможны два способа обращения: по имени поля в наборе данных и по имени объекта Field поля.
Для определения порядкового номера поля в наборе данных можно использовать свойство FieidNo типа Integer, например, так:
Var X: integer;
. . .
х:= Tablel.FieldByName('Date').FieidNo;
Для доступа к значению поля служат свойства Value и AsXXX. Свойство Value типа Variant представляет собой фактические данные в объекте типа TField.
При выполнении приложения это свойство используется для чтения и записи значений в поле. Если программист обращается к свойству Value, то он должен самостоятельно обеспечивать преобразование и согласование типов значений полей и читаемых или записываемых значений. В табл. 7.3 приводятся возможные типы свойства value для различных объектов типа TField.
Таблица 7.3
Возможные типы свойства value
Тип объекта поля |
Тип свойства Value |
TFieid |
Variant |
TStringField, TBLOBField |
String |
TIntegerField, TSmalIntField, TWordField, TAutoincField |
Longint |
TBCDField, TFloatField, TCurrencyField |
Double |
TBooleanField |
Boolean |
TDateTimeField, TDateField, TTimeField |
TDateTime |
Рассмотрим пример, в котором доступ к значению поля осуществляется с помощью свойства Value:
procedure TForml.ButtonlClick(Sender: TObject);