3

「クロス ボタン」または 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;

[はい] をクリックしても [いいえ] をクリックしても、アプリケーションが終了します。確認ボックスをクリックしなくても、アプリケーションが終了しないようにするにはどうすればよいですか。上記の機能をどのように改善すればよいですか?この機能を実装するために正しいフォーム イベントを使用していますか? 助けてください..

4

2 に答える 2

9

入力すると、ウィンドウは開いたままになります

Action := caNone;

あなたの他の部分で

于 2012-11-27T09:53:47.923 に答える
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;

または@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;
于 2012-11-27T09:54:12.400 に答える