Реализация бизнес-правил в компоненте TField
Анализ правильности введенного в поле значения
Проверку правильности введенного в поле значения можно осуществить в обработчиках событий On Validate, OnSetText, OnChange.
Пример.
Значение поля Company не должно содержать символ '@':procedure TForm1.Table1CompanyValidate(Sender: TField);
begin
IF POS('@',Table1Company.AsString) > 0 THEN raise Exception.Create('Неверное значение');
end;
Пример.
Значение поля PUR_PRICE не должно превышать 100:procedure TForm1.Table1PUR_PRICESetText(Sender: TField;
const Text: String);
var Tmp : Real;
begin
Tmp := StrToFloat(Text) ;
IF Tmp > 100 THEN ShowMessage('Ошибочное значение')
ELSE Table1PUR_PRICE.Value := Tmp;
end;
или
procedure TForm1.Table1PUR_PRICEChange(Sender: TField);
begin
IF Table1PUR_PRICE.Value > 100 THEN raise Exception.Create('Ошибочное значение');
end;
Форматирование содержимого поля при показе и редактировании
Значения могут храниться в виде, отличном от того, в котором они показываются пользователю. Преобразование значения поля к виду, пригодному для показа пользователю, осуществляется свойствами EditMask (маска значения при редактировании записи) и DisplayFormat (маска значения при показе в визуальных компонентах), и обработчиком события OnGetText, который применяется, если возможностей DisplayFormat для преобразования значения недостаточно.
Пример.
Значение поля Company при редактировании должно показываться в кавычках, при просмотре - с заменой всех букв на заглавные:procedure TForm1.Table1CompanyGetText(Sender: TField; var Text: OpenString;
DisplayText: Boolean);
begin
IF DisplayText THEN Text := AnsiUpperCase(Table1Company.AsString)
ELSE Text := ' " ' + Table1Company.AsString + ' " ';
end;
Свойства CustomConstraint и ConstraintErrorMessage
Свойство поля
property CustomConstraint: string;
позволяет наложить ограничения на значения поля (при помощи SQL-подобного синтаксиса). Если в поле занесено значение, не отвечающее указанному ограничению, возбуждается исключение с сообщением, определяемым свойством
property ConstraintErrorMessage: string;