掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
色々なFormのCreateを動的に行うには (ID:39924)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TForm2(frm).kidou のようにしてやれば実行はできますが それではfrmが必ずTForm2(またはその派生クラス)でなくてはいけないから、動的生成する意味がないですよね。 実際にやりたいことは、TForm2, TForm3, TForm4, ... がすべて kidou というメソッドを持っていて、それを呼び出したいということだと思いますが それを実現するには、まず kidou という仮想メソッドを持つ共通の親クラスを作らなくてはいけません。 type TForm_Parent = class(TForm) public procedure kidou; virtual; abstract; end; その他のフォームはこのクラスから継承し、kidouメソッドをオーバーライドして実装します。 type TForm2 = class(TForm_Parent) public procedure kidou; override; end; これで下のように動的にクラスを生成してメソッドを呼び出せます。 type TForm_ParentClass = class of TForm_Parent; procedure yobidasi(param: TForm_ParentClass); var frm: TForm_Parent; begin frm := param.Create(Self); frm.kidou; end; ちなみに、やりたいことはそうじゃなくて「TForm2の時だけkidouを呼び出す」だというのなら、以下の一文で済みます。 if frm is TForm2 then TForm2(frm).kidou;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.