我有一个内存数据集通过一些数据源附加到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处理程序捕获它.这不好.您应该能够在程序运行的级别执行某些操作,假设您的应用程序包含许多表单和例程,而不是更高级别.
我希望我的问题更清楚.