CreateMessageDialogでもIconおよびBmpの設定方法を教えて下さい

解決


超初心者  2005-12-16 15:09:31  No: 19286  IP: 192.*.*.*

HelpやTipsで検索しサンプルPGを参照しながら
下記のようなロジックで行っています
コンパイルはうまくいくのですが、実行時に
「無効なクラス型キャスト」とメッセージが出て怒られます
どこが悪いのでしょうか?
usesに追加しなければいけないのでしょうか?
するとすれば何を追加したらよいのでしょうか?

procedure Tfrm_Main.CSVEXE(intExeMode: Integer);
var
  dlg       : TForm;
  res       : Word;
begin
  dlg := CreateMessageDialog('Test', mtCustom, [mbYes, mbNo]);
  with dlg do
  begin
    Caption := '超初心者';
    (Components[0] as Timage).Picture.Bitmap.LoadFromFile('D:\Keiri\KimatuCSV\XLS.bmp');
    res := ShowModal;
    Free;
  end;
end;

編集 削除
超初心者  2005-12-16 15:50:41  No: 19287  IP: 192.*.*.*

上記以外に簡単にできる方法等があればご教授ください

編集 削除
coo  2005-12-17 00:28:13  No: 19288  IP: 192.*.*.*

普通にこれでできました

procedure TForm1.Button1Click(Sender: TObject);
var
        dlg:TForm;
begin
        dlg := CreateMessageDialog('Test', mtInformation,[mbYes, mbNo]);
        dlg.Caption := '超初心者';
        TImage(dlg.FindComponent('Image')).Picture.Bitmap.LoadFromFile('D:\Keiri\KimatuCSV\XLS.bmp');
        dlg.ShowModal;
        dlg.Free;
end;

Delphi6Personal
Windows2000

参考URL
http://www.asahi-net.or.jp/~HA3T-NKMR/tips011.htm

編集 削除
超初心者  2005-12-19 17:51:20  No: 19289  IP: 192.*.*.*

cooさんありがとうございます。
ちゃんとできました。
但し、ダイアログタイプをmtCustomにするとエラーがでました!
なぜでしょうか?
カスタムしてるのに・・・・

編集 削除
ジョナサン・トースター  2005-12-19 18:18:53  No: 19290  IP: 192.*.*.*

> 但し、ダイアログタイプをmtCustomにするとエラーがでました!
mtCustom では、アイコンがない(TImageが作成されない)からです。

したがって、dlg.FindComponent('Image') の結果がnil になります。
ということで、アクセス違反になるのは言うまでもありません。

ダイアログタイプは、イメージを変更するだけの引数です。
どうせアイコンを変更するのだから、mtCustomにこだわる必要はないでしょう。

それでもmtCustomにこだわりたいのであれば、こだわりたい理由なんか聞いてみたいです。

編集 削除