Delphi中TDBGridInplaceEdit错误究竟是由哪个具体值引起的?

2026-04-10 02:401阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计437个文字,预计阅读时间需要2分钟。

Delphi中TDBGridInplaceEdit错误究竟是由哪个具体值引起的?

我在尝试编写一个显示用户友好的异常处理程序。我不知道如何获取导致TDBGridInplaceEdit错误的新输入数据值。例如:我有一个DBGrid加载数据。当我故意将第一行的PartNo字段更改为新输入时,程序报错。

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

例如:
我有一个DBGrid加载数据.当我故意将第1行的PartNo字段更改为非数字值以导致TDBGridInplaceEdit错误…(从:1313.3到:1313..3)…我捕获错误并显示消息,但我可以’弄清楚如何获得糟糕的’1313..3’值.

原文PartNo:1313.3

改变PartNo:1313..3(小数点后两位)

应用程序onException中显示的错误消息

Delphi中TDBGridInplaceEdit错误究竟是由哪个具体值引起的?

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方法.(双击数据集并选择添加字段).

方法可能如下所示:

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;

本文共计437个文字,预计阅读时间需要2分钟。

Delphi中TDBGridInplaceEdit错误究竟是由哪个具体值引起的?

我在尝试编写一个显示用户友好的异常处理程序。我不知道如何获取导致TDBGridInplaceEdit错误的新输入数据值。例如:我有一个DBGrid加载数据。当我故意将第一行的PartNo字段更改为新输入时,程序报错。

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

例如:
我有一个DBGrid加载数据.当我故意将第1行的PartNo字段更改为非数字值以导致TDBGridInplaceEdit错误…(从:1313.3到:1313..3)…我捕获错误并显示消息,但我可以’弄清楚如何获得糟糕的’1313..3’值.

原文PartNo:1313.3

改变PartNo:1313..3(小数点后两位)

应用程序onException中显示的错误消息

Delphi中TDBGridInplaceEdit错误究竟是由哪个具体值引起的?

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方法.(双击数据集并选择添加字段).

方法可能如下所示:

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;