ErrorMessage: String;
Свойство ErrorMessage возвращает информационное сообщение об ошибке, возникшей при разборе выражения.
Для выполнения примера предполагается наличие на форме двух кнопок и компонента ExpressionEdit с наименованиями Button1, Button2 и ExpressionEdit1 соответственно. В репозитории имеется таблица с идентификатором «Table_1». Последнее поле таблицы является вычисляемым.
Пример является обработчиком события OnClick для компонента Button1.
Добавьте ссылки на системные сборки: Db, ExtCtrls, Forms, Metabase, Ui.
Class TestForm: Form
ExpressionEdit1: ExpressionEdit;
Button1: Button;
Button2: Button;
MB: IMetabase;
Tab: ITable;
Field: ITableField;
// Подключение компонента «ExpressionEdit1» к выражению вычисляемого поля таблицы
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Begin
MB := MetabaseClass.Active;
Tab := MB.ItemById("Table_1").Edit As ITable;
Field := Tab.Fields.Item(Tab.Fields.Count - 1);
ExpressionEdit1.Expression := Field.Expression;
End Sub Button1OnClick;
// Проверка корректности введенного выражения для использования в вычисляемом поле таблицы
Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
Var
Expr: IExpression;
ErrInfo: IExpressionErrorInfo;
Begin
Expr := ExpressionEdit1.Expression;
Expr.ThrowException := False;
Expr.AsString := ExpressionEdit1.Formula;
If Not Expr.Valid Then
ErrInfo :=Expr.ErrorInfo;
WinApplication.ErrorBox("При разборе выражения возникла ошибка: " + ErrInfo.ErrorMessage + "." + #10 + #13 + "Позиция: " + ErrInfo.Position.ToString);
Else
Field.Expression.AsString := Expr.AsString;
(Tab As IMetabaseObject).Save;
End If;
End Sub Button2OnClick;
End Class TestForm;
При выполнении формы, после нажатия кнопки «Button1» компонент «ExpressionEdit1» будет подключен к выражению вычисляемого поля таблицы. После редактирования выражения в компоненте «ExpressionEdit1», при нажатии на кнопку «Button2» будет осуществляться проверка корректности введенного выражения для использования в вычисляемом поле таблицы. Если выражение корректно, то оно будет обновлено в вычисляемом поле таблицы и таблица будет сохранена. Если введенное выражение не корректно, то на экран будет выведено сообщение, содержащее текст и номер позиции, в которой возникла ошибка при разборе выражения. При некорректном выражении исключительная ситуация платформы возникать не будет.
См. также: