多くのイベントハンドラを含むデザインと実行時コンポーネントがあります。私は今それをTNewCompと呼ぶでしょう。私はTFormにTNewCompのインスタンスを作成し、設計時にプロパティエディタを使ってイベントスタブを特定のコードで埋めて、現在のイベントハンドラコードセットを使用するTNewcompの新しいインスタンスを作成できるようにしたいと思います。動的に作成されたコンポーネントのイベントハンドラをDelphi 6で自動的に割り当てる方法はありますか?
これを行うには、TNewCompのコンストラクタを呼び出してから、新しいインスタンスのイベントハンドラのそれぞれに、デザイン時に作成されたTNewCompインスタンスを含むフォームにある対応するイベントスタブコードを割り当てます。だから私は、私はどうなる各イベントハンドラのTNewFormと呼ばれるフォームにFNewCompという名前の変数に代入TNewCompのインスタンスを持っている場合:
FNewComp.onSomething = TNewform.onSomething
(... repeat for each event handler belonging to TNewComp ...)
これは正常に動作しますが、私が追加した場合には、面倒で悪化しています新しいイベントハンドラをTNewCompに追加するには、イベントハンドラの割り当てを行うためにnewTComp()関数を更新することを忘れないでください。新しいインスタンスを動的に作成するすべての固有のコンポーネントタイプについて、このプロセスをリンスして繰り返します。
おそらくプロパティ検査やその他のDelphi 6イントロスペクションテクニックを使用してこのプロセスを自動化する方法はありますか?
- roschler
私はちょうどAlt + F12を使い、.dfmファイルで簡単にコピー/貼り付けをすると思います。私は、このメリットがそれ以上の特注の工具であるかどうかはわかりません。 –
@David Hefferman - 実行時にインスタンスの数が不明で、すべてが実行時にTNewComp.Createを使用して作成されたときに、実行時に新しいインスタンスを作成するときにソリューションがどのように動作するかわかりません。 –
あなたの問題は設計時だと思った。なぜあなたが現在やっていることをするのは難しいのか分かりません。あなたが考えているのは、イベントとハンドラを関連付けるためのいくつかのルールが必要です。あなたはどう思いますか?名前ベース? –