首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TClientDataSet的OnValidate

TClientDataSet的OnValidate
EN

Stack Overflow用户
提问于 2012-11-01 11:14:54
回答 3查看 3.8K关注 0票数 5

我正在尝试在TClientDataSet上的字段上编写一个OnValidate事件,类似于

代码语言:javascript
复制
procedure TForm8.ClientDataSet1MyFieldValidate(Sender: TField);
begin
  if Sender.AsFloat > 30 then
     raise Exception.Create('Too Much!!!');
end;

但是Sender.AsFloat总是0-我该如何做字段级别的验证(我意识到在这种情况下我可以使用约束或设置最小/最大值)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-02 09:01:09

这是一个在Delphi XE3中引入的错误,这里是QC report,以及我为了清楚地说明这个问题而制作的一个快速movie。希望这个问题能在下一次更新中得到解决。如果您需要立即修复,QC页面上的一个评论中有一个热修复程序。

票数 3
EN

Stack Overflow用户

发布于 2012-11-01 16:14:37

这在D2010上运行得很好,区别在哪里……

代码语言:javascript
复制
procedure TForm3.FloatValidate(Sender: TField);
begin
  if sender.AsFloat > 30 then Showmessage('No');

end;

procedure TForm3.Button1Click(Sender: TObject);
begin
   With Clientdataset1 do
    begin
      FieldDefs.add('ID',ftInteger,0);
      FieldDefs.add('Floatfield',ftFloat,0);
      Createdataset;
      Fields[1].OnValidate := FloatValidate;
    end;

end;
票数 1
EN

Stack Overflow用户

发布于 2012-11-02 06:03:08

您可能希望检查Sender.NewValue是否包含您想要的值。如果客户端数据集上的更新缓存处于活动状态,则可以使用字段的OldValue、Value和NewValue。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13170446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档