messagebox (handle, '本当に終了しますか?', 'よろしいですか?', 1);
このボタンには、ユーザーができることが 2 つあります。はい、キャンセルします。キャンセルを押すと、ボタンが「OK」でプログラムを閉じてダイアログを終了するコードを書く必要がありますか?
messagebox (handle, '本当に終了しますか?', 'よろしいですか?', 1);
このボタンには、ユーザーができることが 2 つあります。はい、キャンセルします。キャンセルを押すと、ボタンが「OK」でプログラムを閉じてダイアログを終了するコードを書く必要がありますか?
まず、メッセージボックスのボタンがテキストと一致していることを確認します。したがって、テキストが「本当に終了しますか?」の場合 その場合、ボタンは「はい」と「いいえ」になります。
次に、適切な定数を使用して、後でコードを読みやすくします。それは次のようになります:
var
Res: integer;
Res := Application.MessageBox('Do you really want to exit?', 'Are you sure?',
MB_ICONQUESTION or MB_YESNO);
結果はIDYESまたはIDNOのいずれかになります。したがって、呼び出しがメインフォームのメソッド内にあると仮定すると、次のように使用します。
if Res = IDYES then
Close;
別の場所からこれを呼び出す場合は、
if Res = IDYES then
Application.Terminate;
編集:次のようなダイアログボックスのVistaユーザーインターフェイスガイドラインも確認してください。
不必要な確認は迷惑です
Delphi は、メッセージ ボックスを表示するためのより優れたソリューションを提供します。MessageDlg 関数を使用する必要があります。MessageDlg (および MessageBox) 関数の戻り値は、ユーザーの選択を示します。したがって、MessageDlg に [はい] ボタンを配置すると、ユーザーが [はい] ボタンを押すと、戻り値は mrYes になります。したがって、コードは次のようになります。
var
ShouldClose: Boolean;
begin
if MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes then
ShouldClose := True
else
ShouldClose := False;
end;
また、ユーザーが [はい] を選択した場合は、アプリケーションを閉じます。通常の Delphi VCL アプリケーションがある場合、メインフォームの CloseQuery イベントを実装できます。メインフォームを閉じようとすると (閉じるボタンをクリックするなど)、変数 CanClose を持つときに CloseQuery イベントが実行されます。CanClose を True に設定すると、MainForm を閉じても問題ないことを意味します。false に設定すると、メインフォームが閉じなくなります。
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes;
end;