在我们的主数据输入屏幕上,我们在OnBeforePost事件中有一个OK / Cancel对话框。
Dataset.Cancel;
它的作用是什么,回滚任何更改并将数据集置于浏览模式。
这对大多数客户来说都没问题,但我们被问到是否可以将其更改为
如果他们想取消,可以使用取消按钮。
查看procedure TDataSet.Post;
的来源,看起来不可能以这种方式使用事件。
任何人都有任何想法可以做到这一点吗?
跟进:这就是我现在选择处理它的方式
case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
mrYes: ;
mrNo: Dataset.Cancel;
mrAbort: Abort;
mrNone: Abort;
end;
答案 0 :(得分:22)
调用方法Abort
(来自单位System
,如果我没记错的话)会引发一个无声的EAbort
异常,它会取消当前的操作。这应该有用。
(顺便说一下:取消数据集操作的这种方法也在帮助系统的深处被描述为实现这一目标的'正常'方式 - 这就是我从最初获得这种技术的地方。)