Я пытаюсь написать обработчик исключений, который отображает удобные для пользователя сообщения. Я не знаю, как получить значение данных "Newly Entered", которое вызвало ошибку TDBGridInplaceEdit.
Например:
У меня есть DBGrid, загруженный данными. Когда я намеренно изменяю поле PartNo строки №1 на нечисловое значение, чтобы вызвать ошибку TDBGridInplaceEdit... (от: 1313.3 до: 1313..3)... я перехватываю ошибку и отобразить сообщение, но я не могу понять, как получить неправильное значение «1313..3».
Номер исходной детали: 1313.3
Измененный номер детали: 1313..3 (два десятичных знака)
Отображается сообщение об ошибке приложения onException
procedure TMain.ApplicationEvents1Exception(Sender: TObject; E: Exception);
var
str : string;
begin
str := sender.ToString;
str := str + #10;
str := str + RzDBGrid2.SelectedField.FieldName;
str := str + #10;
str := str + VarToStr(RzDBGrid2.SelectedField.Value);
str := str + #10;
str := str + e.Message;
showmessage(str);
//Application.ShowException(E);
end;
Я хотел бы отформатировать свое собственное сообщение, используя введенное неверное значение «1313..3». Как получить это значение?
NewValue
. Я не знаю, как добраться до значения в этот момент. Лучшим способом, вероятно, было бы установить маску редактирования для самого поля, что в первую очередь предотвратило бы ввод недопустимого значения. - person Ken White   schedule 23.08.2013procedure TField.SetEditText(const Value: string); in DB.pas
, я ожидаю, что это одно из желаемых применений дляOnSetText
- person bummi   schedule 23.08.2013try
для его обработки. - person J...   schedule 23.08.2013repairing
ввода, запросив у пользователя исправленный ввод или просто вызвав ошибку с желаемым форматом, вместо того, чтобы ждать возникновения исключения. - person bummi   schedule 23.08.2013