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;
上記以外に簡単にできる方法等があればご教授ください
普通にこれでできました
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
cooさんありがとうございます。
ちゃんとできました。
但し、ダイアログタイプをmtCustomにするとエラーがでました!
なぜでしょうか?
カスタムしてるのに・・・・
> 但し、ダイアログタイプをmtCustomにするとエラーがでました!
mtCustom では、アイコンがない(TImageが作成されない)からです。
したがって、dlg.FindComponent('Image') の結果がnil になります。
ということで、アクセス違反になるのは言うまでもありません。
ダイアログタイプは、イメージを変更するだけの引数です。
どうせアイコンを変更するのだから、mtCustomにこだわる必要はないでしょう。
それでもmtCustomにこだわりたいのであれば、こだわりたい理由なんか聞いてみたいです。
ツイート | ![]() |