gpt4 book ai didi

delphi - 如何获取导致 TDBGridInplaceEdit 错误的值?

转载 作者:行者123 更新时间:2023-12-03 15:27:03 28 4
gpt4 key购买 nike

我正在尝试编写一个异常处理程序来显示用户友好的消息。我不知道如何获取导致 TDBGridInplaceEdit 错误的“新输入”数据值。

例如:
我有一个加载了数据的 DBGrid。当我故意将第 1 行的 PartNo 字段更改为非数值以导致 TDBGridInplaceEdit 错误时...(从:1313.3 到:1313..3)...我捕获该错误并显示一条消息,但我不知道如何获取错误的“1313..3”值。

enter image description here
原厂零件编号:1313.3

enter image description here
更改零件编号:1313..3(两位小数)

enter image description here
应用程序 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”值来格式化我自己的消息。你如何获得这个值?

最佳答案

如果您要保留数据集的字段,则可以在字段上定义 OnSetText 方法。(双击数据集并选择添加字段)。

enter image description here

该方法可能如下所示:

procedure TForm1.ADataSetAFloatFieldSetText(Sender: TField; const Text: string);
var
f:Double;
begin
if not TryStrToFloat(Text,f) then
begin
raise Exception.Create(
'Error on: '
+ #13#10'Dataset: ' + Sender.DataSet.Name
+ #13#10'Field: ' + Sender.FieldName
+ #13#10'Old Value: ' + Sender.AsString
+ #13#10'New Value: ' + Text
);
end;
end;

如果您想避免保留字段,您可以动态地将方法分配给该字段,例如打开数据集后。

procedure TForm1.ADataSetAfterOpen(DataSet: TDataSet);
Var
i:Integer;
begin
for I := 0 to Dataset.FieldCount - 1 do
begin
if Dataset.Fields[i].DataType in [ftFloat, ftCurrency, ftBCD] then
Dataset.Fields[i].OnSetText := ADataSetAFloatFieldSetText;
end;
end;

关于delphi - 如何获取导致 TDBGridInplaceEdit 错误的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392293/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com