15

在我们的主数据输入屏幕上,我们在 OnBeforePost 事件中有一个确定/取消对话框。

  • 好的,让事情顺其自然
  • 立即取消Dataset.Cancel;

它完成了它的意图,回滚任何更改并将数据集置于浏览模式。

这对大多数客户来说都很好,但我们被问到是否可以将其更改为

  • Cancel,Abort the Post 并保持在编辑模式,并保留当前的更改。

如果他们想取消,可以使用取消按钮。

查看源代码procedure TDataSet.Post;似乎不可能以这种方式使用该事件。

有人对可以做到这一点的方式有任何想法吗?

跟进:这就是我现在选择的处理方式

case MessageDlg('Save Changes?', mtWarning, [mbYes, mbNo, mbAbort], 0) of
  mrYes: ;
  mrNo: Dataset.Cancel;
  mrAbort: Abort;
  mrNone: Abort;
end;
4

1 回答 1

23

调用该方法Abort(从 unit System,如果我没记错的话)会引发一个静默EAbort异常,它只会取消当前操作。那应该行得通。

(顺便说一句:这种取消数据库操作的方法在帮助系统的深处也被描述为实现此目的的“正常”方法——这就是我最初获得这种技术的地方)。

于 2009-05-08T07:02:36.480 回答