小编Exp*_*nce的帖子

为什么OnEditError或OnPostError在TClientDataSet中捕获无效的用户条目?

我有一个内存数据集通过一些数据源附加到TDBGrid.问题是,只要用户在数字字段中输入减号并按ENTER或导航到另一个记录,就会触发AV(验证错误).我无法从TDBGrid和TClientDataSet(OnEditError,OnPostError)捕获AV.

我在这里做错了什么.如果没有,有人有解决方法吗?

使用Delphi XE2 Enterprise,第4次更新; 最新的MIDAS.DLL; 目标平台:Win64.

================================================== ============================

请尝试以下方法:

1-创建一个新的VCL应用程序/表单,并将对象:TClientDataSet,TDBGrid和TDataSource添加到表单中.ClientDataSet未附加到任何数据库(内存中)

2-向Table1(TClientDataSet)添加持久数字字段.

3-链接上述三个对象.持久字段的列应出现在TDBGrid上.

4-在主窗体的OnShow方法中添加以下行:

Table1.Active:= False;

Table1.CreateDataSet;

Table1.Active:= True;

5-运行程序并在数字字段列中键入减号,然后按Enter键.

检查AV,然后尝试向Table1添加OnEditError和/或OnPostError事件处理程序以捕获AV.你不能中止这个帖子.意思是,AV会发生,你只能使用Application.OnException处理程序捕获它.这不好.您应该能够在程序运行的级别执行某些操作,假设您的应用程序包含许多表单和例程,而不是更高级别.

我希望我的问题更清楚.

delphi tclientdataset delphi-xe2

4
推荐指数
1
解决办法
1224
查看次数

标签 统计

delphi ×1

delphi-xe2 ×1

tclientdataset ×1