您需要创建自己的后代(或您正在使用的其他数据集类型)TMyQuery
。TXxxQuery
并在您的类中覆盖Post
方法并添加一个新事件,允许决定是否Post
需要。然后注册新组件并TXxxQuery
在您的应用程序中替换为TMyQuery
. 并创建事件处理程序。
例如,TMyQuery
:
interface
type
TMyAllowPostEvent = procedure (ASender: TDataSet; var AAllow: Boolean) of object;
TMyQuery = class (TXxxQuery)
private
FOnAllowPost: TMyAllowPostEvent;
public
procedure Post; override;
published
property OnAllowPost: TMyAllowPostEvent read FOnAllowPost write FOnAllowPost;
end;
implementation
procedure TMyQuery.Post;
var
lAllow: Boolean;
begin
lAllow := True;
if Assigned(OnAllowPost) then
OnAllowPost(Self, lAllow);
if lAllow then
inherited Post;
end;
以及事件处理程序的示例:
procedure TForm1.MyQuery1AllowPost(ASender: TDataSet; var AAllow: Boolean);
begin
AAllow := MessageDlg('Would you like to save changes ?', mtConfirmation, mbYesNo, -1) = mrYes;
end;