
- •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. Объекты поля
Объект поля Field имеет тип TFieid и служит полем набора данных. Тип TField является абстрактным классом и непосредственно не используется. Вместо него применяются производные классы (табл. 7.1), соответствующие типу данных, размещаемых в рассматриваемом поле набора данных. Производные классы отличаются от базового класса TField некоторыми особенностями, связанными с манипулированием конкретным типом данных, например, символьным, числовым или логическим. Далее под объектами типа TField мы будем понимать либо сам объект типа TField, либо один из производных от него объектов, например, типа TStringField (строковое значение) или TIntegerField (целочисленное значение).
Таблица 7.1
Типы объектов
-
Тип объекта
Вид поля
TBLOLBField
BLOB-поле
TMemoField
Мемо-поле (поле комментария)
TGraphicField
Графическое поле
TBooleanField
Логическое поле
TBinaryField
Двоичное поле
TBytesField
Поле байтов фиксированной длины
TVarBytesField
Поле байтов для значений переменной длины
TDateTimeField
Поле даты и времени
TDateField
Поле даты
TTimeField
Поле времени
TNumericField
Числовое поле
TBCDField
Поле BCD-значения
TFloatField
Поле вещественного значения
TCurrencyField
Поле значения денежной суммы
TIntegerField
Поле целочисленного значения (32 разряда)
TAutoincField
Поле автоинкрементного значения (32 разряда)
TSmallintField
Поле целочисленного короткого значения (16 разрядов)
TLargeintField
Поле целочисленного длинного значения (64 разряда)
TWordField
Поле целочисленного значения без знака (16 разрядов)
TStringField
Поле строкового значения
Объекты типа TField являются невизуальными и служат для доступа к данным соответствующих полей записей. Управляя объектами типа TField, можно управлять поведением полей, при этом все объекты полей являются независимыми друг от друга. Например, разработчик может запретить модификацию значения отдельного поля, несмотря на то, что набор данных в целом является модифицируемым и допускает изменение значений других полей. Кроме того, можно скрыть то или иное поле от пользователя, сделав его невидимым.
Существуют следующие два способа задания состава полей набора данных:
по умолчанию (динамические поля);
с помощью редактора полей (статические поля).
По умолчанию при каждом открытии набора данных как на этапе проектирования, так и на этапе выполнения приложения для каждого поля набора автоматически создается свой объект типа TField. В этом случае мы имеем дело с динамическими полями, достоинством которых является корректность отображения структуры набора данных даже при ее изменении. Напомним, что для компонента Table состав полей определяется структурой таблицы, с которой этот компонент связан, а для компонента Query состав полей зависит от SQL-запроса.
Однако использование динамических полей имеет и существенные недостатки, связанные с тем, что для полученного набора данных нельзя выполнить такие действия, как ограничение состава полей или определение вычисляемых полей.
Поэтому при необходимости этих операций следует использовать второй способ задания состава полей.
На этапе разработки приложения с помощью Редактора полей можно создавать для набора данных статические (устойчивые) поля, основные достоинства которых состоят в реализации следующих возможностей:
определение вычисляемых полей, значения которых рассчитываются с помощью выражений, использующих значения других полей;
ограничение состава полей набора данных;
изменение порядка полей набора данных;
скрытие или показ отдельных полей при выполнении приложения;
задание формата отображения или редактирования данных поля на этапе разработки приложения.
Необходимо отметить, что при модификации структуры таблицы, например, удалении поля или изменении его типа, открытие набора данных, имеющего статические поля, может привести к возникновению исключительной ситуации.