Основные методы виртуального поля записи
Clear‑ очистить поле (сделать пустым).
FocusControl‑ перемещение фокуса на значение поля.
IsValidChar(С:Char):Boolean ‑ символ C допустим для поля (True).
Доступ к полюреализуется свойством Fields[<номер поля>] и методами таблицы FieldByName(‘<имя поля>’), FindField(‘<имя поля>’).
Доступ к значению поляреализуется свойствами полей Value и As<тип> и свойством таблицы FieldValues:
Value‑ представляет значение поля. При доступе к физическому полю преобразование к типу результата выполняется автоматически, если это возможно, в отличие от постоянного поля ‑ пользователь обязан указать тип результата, равный типу поля.
Примеры доступа к динамическим и постоянным полям таблицы:
Label1.Caption:=Datamodule2.Stroiki.FieldByName('Ns').Value;//значение Ns
Label1.Caption:=Datamodule2.Stroiki.FindField('Ns').Value;//значение Ns
Label1.Caption:=Datamodule2.StroikiNs.Value; //постоянное поле StroikiNs
Label1.Caption:=Datamodule2.StroikiKz.Value;//ошибка:Кz‑число(не строка)
As<тип> ‑ представляется значение поля с преобразованием этого значения к указанному типу: Variant, String, Integer (Longint), Float (Double), Currency, Boolean, DateTime.
Примеры:
Label1.Caption:=Datamodule2.StroikiKz.AsString; //Kz переводится в строку
Datamodule2.Stroiki.Fields[0].AsString:=Edit1.Text; //название стройки
DataModule2.Stroiki.FindField(‘Ss’).AsCurrency:=100000;//смета стройки
FieldValues[‘<имя поля>’] ‑ доступ к значению поля под указанным именем
Пример: DataModule2.Zakazhiki.FieldValues['Nz']:='Уралмаш';//заказ.
Запретить корректировкуили скрытьполе можно свойствами ReadOnly, Visisble (Datamodule2.Stroiki.FieldByName('Ns').Visisble :=True).
Проверка типа поляреализуется свойством поля DataType типа TFieldType: ftString,ftSmallint,ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftDate, ftTime, ftDateTime,ftBytes, ftAutoInc, ftBlod, ftGraphic и др.
Контроль значения поляреализуется свойствами поля: MinValue (минимум), MaxValue (максимум), CustomConstraint (текст условия), ConstraintErrorMessage (текст сообщения об ошибке).
Пример:
With Datamodule2.Stroiki Begin...//присоединение имени модуля и таблицы
FieldByName('Kz').CustomConstraint:='Kz>=0 and Kz<=9'; //условие
FieldByName('Kz').ConstraintErrorMessage:='Ошибка'; //текст сообщения
FieldByName('Kz').DefaultExpression:='0'; //значение по умолчанию
Для более сложного контроля можно использовать обработчики событий для поля в порядке их генерации: OnSetText (генерируется только при вводе до изменения значения поля), OnValidate, OnChange. Последние два события генерируются после окончания ввода или присвоения значения программным путем. В обработчике OnSetText второй аргумент содержит новое значение, которое можно проверить, и если оно правильное, то присвоить это значение полю.
Пример обработчика события OnValidate для поля Kz:
Procedure TDataModule2.StroikiKzValidate(Sender: TField);
Begin If Datamodule2.Stroiki.FieldByName('Kz').Value >10 Then Begin
ShowMessage ('Ошибка! Код заказчика вне диапазона [1,10]');
Datamodule2.Stroiki.Cancel; End Else Datamodule2.Stroiki.Post; End;
Дата добавления: 2016-03-22; просмотров: 467;