0

フォームのメンバー関数としてイベント ハンドラーがあります。独自のユニットに含まれる別のフォームからのイベントに対して、このハンドラーを再利用したいと考えています。ただし、オブジェクト インスペクターを使用してハンドラーを割り当てることはできません。

[1] では、第 2 形式へのハンドラーの「可視性」を有効にすることで問題が解決されたようですが、それが c++(ビルダー) にどのように適用されるかはわかりません。

ハンドラーをメンバー関数として定義しない方が賢明だと思います。これには何が最善のアプローチでしょうか?

よろしくお願いします

[1]別のハンドラーからボタン クリック イベント ハンドラーを呼び出す/呼び出すにはどうすればよいですか? (c#)

4

1 に答える 1

1

オブジェクト インスペクターを使用せずに、コード自体でイベント ハンドラーを割り当てることもできます。例えば

   TButton* pButton = new TButton(NULL);
   pButton->OnClick = MyCustomButtonClickHandlerFunction;

もちろん、カスタム イベント ハンドラー関数のプロトタイプは、問題のイベント ハンドラーのプロトタイプと同じでなければなりません。フォームを動的に作成しているときは、とにかくオブジェクトインスペクターを使用できないため、私は常にこの種のものを使用しています。

あなたの場合、クラスと関数が内部メンバーにアクセスする方法によって異なりますが、別のクラスからイベント ハンドラーを割り当てることは不適切な場合があります。ハンドラーをメンバー関数にならないように再設計できたとしても、両方のクラスで使用できない理由がわかりません。VCL オブジェクトは通常、そのクラスのメンバー変数として動的に作成されますが、フォームやボタン、その他の GUI オブジェクトのイベント ハンドラーとして、他のクラスのメンバー関数を使用しました。

于 2012-07-25T09:38:58.927 に答える