Delphi Tips 
-----------------------------

0238  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/09/06 西坂良幸 rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/09/06 西坂良幸 編集
メッセージボックスのデフォルトボタンを変えたい

ボタンが、[はい、いいえ]ならNoの方に、デフォルトが、[はい、いいえ、キャンセル]ならキャンセルにデフォルトを置きたい場合があります。
APIのMessageBoxのヘルプから、スタイルフラッグを調べて下さい。ApplicationのMessageBox メソッドを使えば簡単です。

  Application.MessageBox('デフォルトボタンを変えています', PChar(Application.Title), MB_ICONQUESTION + MB_YESNO + MB_DEFBUTTON2);

   Application.MessageBox('デフォルトボタンを変えています', PChar(Application.Title), MB_ICONQUESTION + MB_YESNOCancel + MB_DEFBUTTON3);


がわかりやすいでしょう。

CreateMessageDialog関数を使われるなら、次のような自作関数はどうでしょうか。
Defaultパラメータを、2とか3にすれば、デフォルトボタンを変えることができます。

function MessageDlgEx(const Msg: string; AType: TMsgDlgType; AButtons: TMsgDlgButtons; HelpCtx: Longint = 0; default: Word = 1): Word;
var
  Dlg: TForm;
begin
  Dlg := CreateMessageDialog(Msg, AType, AButtons);
  try
    // 最初のボタンが Components[2]である
    if (Default <1) or (Default >= Dlg.ComponentCount - 1) then Default := 1;
    Dlg.HelpContext := HelpCtx;
    Dlg.ActiveControl := TWinControl(Dlg.Components[default + 1]);
    result := Dlg.ShowModal;
  finally
    Dlg.Free;
  end;
end;

参照: [Delphi-ML:5944] [Delphi-ML:32505] <ダイアログ>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp