掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
色々なFormのCreateを動的に行うには (ID:39926)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ご回答ありがとうございます。とてもわかりやすいです。 > 実際にやりたいことは、TForm2, TForm3, TForm4, ... がすべて kidou というメソッドを持っていて、それを呼び出したいということだと思いますが そのとおりです。 ですがモノによっては、kidou関数は引数がついてたり返り値があったりなのでやっぱり無理か… と挫折しかけましたが kidouのオーバーロードなり、別の関数なりを親クラスに定義しておけばできそうですね そうすると呼び出し側で条件分岐しなければいけないので 動的に呼び出す意味がますます薄れるかと思いますが、ご容赦ください さて、親クラスを継承する方法で進め、コンパイルはできました。 しかし実行時、Form2のkidou関数内ではForm2がnilになっており、エラーになってしまいます。 前段階のfrm変数は生成できているようなのですが… // Form1--------------------------------------------------------- TForm_ParentClass = class of TForm_Parent; TForm1 = class(TForm) … procedure TForm1.Button1Click(Sender: TObject); begin yobidasi(TForm2); end; procedure TForm1.yobidasi(param: TForm_ParentClass); var frm: TForm_Parent; begin frm := param.Create(Self); frm.kidou; end; // Form2--------------------------------------------------------- TForm2 = class(TForm_Parent) public { Public declarations } procedure kidou; override; end; procedure TForm2.kidou; begin inherited; Form2.ShowModal; // ←ここでForm2がnil※※※※※※※※※※※※ end; 以上、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.