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

解決


超初心者  2005-12-17 00:09:31  No: 19286

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-17 00:50:41  No: 19287

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


coo  2005-12-17 09:28:13  No: 19288

普通にこれでできました

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-20 02:51:20  No: 19289

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


ジョナサン・トースター  2005-12-20 03:18:53  No: 19290

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

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加