私はあなたが以下のアプローチを使用してそれを行うべきだと思う:
- 化合物成分に
OnDblClick
イベントを追加します。
FOnInternalDblClick
(名前は重要ではありません)というメソッドを追加し、複合コンポーネントにTNotifyEvent
と互換性があります。
FOnInternalDblClick
の中に、化合物成分のOnDblClick
を実行します。
- 複合コンポーネントのコンストラクターで、イベントを管理するすべてのコンポーネントの
OnDblClick
イベントにFOnInternalDblClick
を割り当てます。
例コード:
TMyCompoundComponent = class(TCustomPanel)
protected
FOnDblClick : TNotifyEvent;
procedure FOnInternalDblClick(ASender : TObject);
public
constructor Create(AOwner : TComponent); override;
published
property OnDblClick : TNotifyEvent read FOnDblClick write FOnDblClick;
end;
constructor TMyCompoundComponent.Create(AOwner : TComponent);
begin
inherited;
//Lab1.OnDblClick := FOnInternalDblClick;
//Lab2.OnDblClick := FOnInternalDblClick;
//...
end;
procedure TMyCompoundComponent.FOnInternalDblClick(ASender : TObject);
begin
if(@FOnDblClick <> nil)
then FOnDblClick(ASender);
end;
注:化合物成分のOnDblClick
イベントハンドラで
、ASender
パラメータは、内部部品(Lab1
、Lab2
、Lab3
あろう.. )。あなたはASender
パラメータとして化合物成分自体を受け取ることを好む場合は、ASender
の代わりにSelf
を渡すことでFOnInternalDblClick
方法を変更することができます:
procedure TMyCompoundComponent.FOnInternalDblClick(ASender : TObject);
begin
if(@FOnDblClick <> nil)
then FOnDblClick(Self);
end;
Tnxたくさん、ちょうど私が必要なもの。 よろしくお願いいたします。 –