Delphi:在OnBeforePost事件中取消TDataSet.Post

时间:2009-05-08 06:59:41

标签: delphi delphi-7 tdataset

在我们的主数据输入屏幕上,我们在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;

1 个答案:

答案 0 :(得分:22)

调用方法Abort(来自单位System,如果我没记错的话)会引发一个无声的EAbort异常,它会取消当前的操作。这应该有用。

(顺便说一下:取消数据集操作的这种方法也在帮助系统的深处被描述为实现这一目标的'正常'方式 - 这就是我从最初获得这种技术的地方。)