Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_БД.doc
Скачиваний:
27
Добавлен:
04.05.2019
Размер:
4.03 Mб
Скачать

Тема. Отображение и выбор значения поля.

При выполнении приложения определить вид полей набора данных можно с помощью свойства DefaultFields:Boolean. Если это свойство имеет значение True, то набор данных имеет поля по умолчанию, то есть динамические, в противном случае – статические поля.

Через объект типа TField можно:

- обратиться к полю и его значению;

- проверить тип и значение поля;

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

Динамические и статические поля имеют одинаковые свойства, события и методы.

Для динамического поля имя объекта Field совпадает с именем соответствующего физического поля таблицы.

Имя статического поля является составным и образуется путем слияния имен набора данных и именем физического поля таблицы БД. Например, если набор данных Table1, определен статический объект для поля Fam, то объект получит имя Table1Fam.

К полю можно обратиться одним из трех способов:

  1. с использованием метода FieldByName:

TbTovar.FieldByName(‘T_Nazv’).AsString:=’Тетрадь’;

  1. через свойство Fields:

TbTovar.Fields[0].AsString:=’Тетрадь’;

  1. путем прямого обращения:

TbTovarT_Tovar.AsString:=’Тетрадь’;

Пример доступа к значению поля:

procedure TForm1.Button3Click(Sender: TObject);

var s:String;

a:real;

begin

// доступ к полю по его имени в наборе данных

s:=TbTovar.fieldbyname('T_Cena').AsString;

a:=TbTovar.fieldbyname('T_Cena').AsFloat;

Label3.Caption:=s;

Label4.Caption:=FloatToStr(a);

// доступ к полю как к отдельному компоненту

s:=TbTovarT_Cena.AsString;

a:=TbTovarT_Cena.AsFloat;

Label3.Caption:=s;

Label4.Caption:=FloatToStr(a);

end;

Редактирование полей выполняется в Редакторе полей. Каждое поле – это объект, класс которого зависит от типа поля. Например,

TbTovarT_Nazv:TStringField;

TbPokupkaSumma:TCurrencyField;

Основные свойства объекта поля Field.

FieldName: String – имя поля.

Например, TbTovarT_Prim.FieldName:='Prim';

DisplayWidth:Integerширина колонки (число символов);

DisplayLabel: String – текст заголовка столбца, отображаемый в DBGrid.

Например,

TbTovarT_Nazv.DisplayLabel:='Наименование товара';

DisplayFormat:String – служит для форматирования значения поля по заданной маске. Маска состоит из трех секций, разделенных (;) (точка с запятой). В маске можно использовать следующие символы:

0 – цифра числа, незначащие нули отображаются,

# - цифра числа, незначащие нули отбрасываются,

. (точка) – разделитель целой и дробной части числа,

, (запятая) – разделитель тысяч,

E+ e+ - разделитель мантиссы и порядка,

“xx” и ‘xx’ – символы, выводимые без изменений,

; - разделитель.

Например,

000E+00 для чисел с плавающей точкой

###0.0 для чисел с фиксированной точкой

###0.00’ р.’ для денежных сумм

##0;-##0;0 отдельно для положительных, отрицательных и нулевых значений.

DataSet:TDataSet – указывает набор данных, связанный с полем.

Например,

if TbTovarT_Nazv.DataSet=TbTovar then ShowMessage('НД - таблица Товар');

FieldNo:Integerсодержит порядковый номер поля в наборе данных (1, 2,..)

Например,

ShowMessage(IntToStr(TbTovarT_Nazv.FieldNo));

Index:Integer – индекс поля, который определяет порядок отображения полей в DBGrid, (начиная с 0).

Например,

ShowMessage(IntToStr(TbTovarT_Nazv.Index));

CanModify:Boolean – только для чтения, разрешено ли изменять значение поля; если равно True, то разрешено.

AsBoolean: Boolean, AsCurrency:Currency, AsDateTime:TDateTime, AsFloat: Double, AsInteger: Integer, AsString:String, AsVariant: Variant – изменяют тип значения поля на указанный (логический, денежный, дата-время, двойной точности, целочисленный, строковый, вариантный.)

IsNull:Boolean – равно True, если поле не содержит значение,

Required:Boolean – если True, то значение каждой записи поля не может быть пустым, в противном случае генерируется исключительная ситуация.

FieldKind:TFieldKind – определяет тип поля и принимает одно из следующих значений:

fkData – обычное поле,

fkCalculated – вычисляемое поле,

fkLookup – подстановочное поле, имеющее связанный с ним список значений,

fkInternalCalc – внешнее вычисляемое поле,

fkAggregate – агрегатное поле.

Value:Variant – определяет текущее значение поля (обращение напрямую),

Например,

ShowMessage(IntToStr(TbTovarT_Kol_vo.Value));

ReadOnly:Boolean – если True, то запрещено вводить в данное поле значение.

Например, TbTovarT_Cena.ReadOnly:=True;

Методы

Procedure Clear; - значение поля текущей записи будет сделано пустым.

Например,

TbTovar.Edit;

TbTovarT_Nazv.Clear;

TbTovar.Post;

Function FocusControl; - фокус ввода будет перемещен на текущей форме к элементу (текущей записи), который отображает значение данного поля.

Например, TbPokupkaP_Kol_vo.FocusControl;

События

OnValidate – возникает при изменении поля вручную или программно до выполнения метода Post, который запоминает изменения в БД и записывает их на диск. Обработчик этого события можно использовать для проверки правильности введенного пользователем значения.

Например, пусть в поле T_Cena БД Tovar нельзя ввести знак “-” (минус). Тогда

procedure TForm1.TbTovarT_CenaValidate(Sender: TField);

begin

if pos('-',TbTovarT_Cena.AsString)>0 then begin

ShowMessage('Введен недопустимый символ!');

Abort;

end;

end;

OnChange – возникает при изменении значения в поле данных.

Например,

procedure TForm1.TbTovarT_CenaChange(Sender: TField);

begin

if MessageDlg('Значение было изменено!'+#10+'Отменить изменение?',

mtConfirmation, [mbYes, mbNo], 0) = mrYes then TbTovar.Cancel;

end;