質問
メッセージボックス(、ハンドル '?あなたが本当に終了しますか'、 'あなたはよろしいですか?'、1);
このボタンでユーザーが何ができるか二つのことが、あります。 OKキャンセル。 私は、キャンセルを押したときに?
、ボタンが「OK」でプログラムを終了し、ダイアログを終了していること、書くためにどのようなコード持っています解決
Delphiはメッセージボックスを表示するための優れたソリューションを提供しています。 私は、MessageDlg関数を使用する必要があります。 MessageDlg(およびメッセージボックス)関数の戻り値は、ユーザーの選択肢を示しています。ユーザーが[はい]ボタンを押したときにだからあなたは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イベントを実装することができMainFormを、CloseQueryイベントは、あなたが(closebuttonをクリックするように)あなたのMainFormを閉じようとしたときに実行し、変数CanCloseを持っています。 Trueに設定CanCloseはMainFormをがクローズからあなたのMainFormを防ぐことができますfalseに設定、閉じるためにOKであることを意味します:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Do you really want to quit?', mtConfirmation,
[mbYes, mbNo], 0) = mrYes;
end;
他のヒント
まず、メッセージボックスのボタンがテキストと一致することを確認します。だから、テキストがある場合は、「あなたが本当に終了しますか?」その後、ボタンが「はい」と「いいえ」である必要があります。
あなたのコードは、後で読みやすくなるように、第二に、適切な定数を使用します。それは次のようになります:
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のユーザーのどの状態のダイアログボックス上のintefaceを指針ます:
不要な確認が迷惑している。