如何在Delphi Form的OnClose事件中使用MessageDlg?

3 delphi dialog delphi-xe2

当我的表单通过单击"交叉按钮"或Alt + F4关闭时,我希望用户询问他是否要关闭该应用程序.如果是,我将终止申请,否则无事可做.我在表单的onclose事件上使用以下代码

procedure MyForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
  buttonSelected : integer;
begin
  buttonSelected := MessageDlg('Do you really want to close the application?',mtCustom, [mbYes,mbNo], 0);
  if buttonSelected = mrYES then
  begin
    Application.Terminate;
  end
  else
  begin
    //What should I write here to resume the application
  end;

end;
Run Code Online (Sandbox Code Playgroud)

无论是单击是还是否,我的应用程序都将终止.我应该怎么做,如果没有点击确认框,我的申请不应该终止.我应该如何改进我的上述功能?我使用正确的表单事件来实现此功能吗?请帮忙..

Obl*_*obl 9

如果您输入,窗口将保持打开状态

Action := caNone;

在你的其他部分


slo*_*omo 9

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
  buttonSelected: integer;
begin
  buttonSelected := MessageDlg('Do you really want to close the application?', mtCustom, [mbYes, mbNo], 0);
  if buttonSelected = mrYES then
  begin
    CanClose:=true;
  end
  else
  begin
    CanClose:=false;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

或者作为@TLama建议,简化:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := MessageDlg('Do you really want to close the application?', mtCustom, [mbYes, mbNo], 0) = mrYES;
end;
Run Code Online (Sandbox Code Playgroud)

  • 你也可以将它简化为一行`CanClose:= MessageDlg('你真的想要关闭应用程序吗?',mtCustom,[mbYes,mbNo],0)= mrYES;`. (4认同)