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

0011  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/08 osamu rev 1.2
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/09/06 西坂良幸 編集
メッセージボックスを独自にカスタマイズしたものを使いたい。

メッセージボックスを使ってたのですが、動きはほとんど同じで表示のアイコンやボタンをカスタマイズする方法って言うのはないものでしょうか? 決まりきった疑問符や感嘆符などではなく、ユーザが自由にビットマップを貼り付けられるようにしたいのですが。

CreateMessageDialog関数を使えば簡単にできます。
以下の例を試して見て下さい。あなた好みのメッセージボックスのイメージが沸いてきますよ。

CreateMessageDialogは、メッセージダイアログのインスタンスを返します。
このダイアログ(TForm)の上のコンポーネントは
                         クラス       名前
Components[0]が、TImage      'Image'
Components[1]が、TLabel      'Message'
Components[2]が、TButton     たとえば 'Yes','No' など
Components[3] ・・・ボタンがつづく
となっています。

function MyMessageBox(Const Msg: String): integer;
var
  Dlg:TForm;
begin
   Dlg:=CreateMessageDialog(Msg, mtError, [mbYes,mbNo]);
   with Dlg do
   try
     Dlg.Caption := '登録確認';
     TImage(Components[0]).Picture.Icon.LoadFromFile('C:\Program Files\Borland\Delphi 4\IMAGES\ICONS\Technlgy.ico');
     TButton(Components[2]).Caption := '登録';
     TButton(Components[3]).Caption := '中止';
     ret := ShowModal;
   finally
     Free;
   end;
end;

// テスト
procedure TForm1.Button1Click(Sender: TObject);
begin
  if MyMessageBox('データを登録しますか?') = mrYes then
    // 登録処理
  else
    ; // 無視
end;

てな具合で絵(BitmapやIcon)を変える事ができます。
LeftやTopを使って配置を換えることも可能です。
HelpContextなども設定できます。

絵は32x32サイズに作っておいた方がいいです。
大きさが違う場合には位置の調整をしなければならなくなりますが、ダイアログ上のコントロールに名前がついていないので苦労します。(D4以降は上記のように名前も付いています)
ボタンについても同様です。
参照: [Delphi-ML:5100] <ダイアログ>

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

How To
Lounge
KeyWords


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