通常、イベントハンドラーは、次のように宣言されたプロパティで宣言されます。
property OnMyEvent: TMyEvent read FOnMyEvent write FOnMyEvent;
したがって、それを起動するには、コードが実行されるため、コンポーネントのソースコードでへの参照または場合によってFOnMyEventはを検索する必要があります。通常、次のようなものが見つかります。FOnMyEventOnMyEvent
procedure TMyComponent.DoMyEvent;
begin
if Assigned(FOnMyEvent) then
FOnMyEvent(Self);
end;
DoMyEvent最後に、と呼ばれる場所を探す必要があります。
実例として、のOnSetTextイベントを使用できますTField。これは次のように宣言されます:
property OnSetText: TFieldSetTextEvent read FOnSetText write FOnSetText;
それがへの唯一の参照OnSetTextです。FOnSetTextしたがって、これにつながるものを探します。
procedure TField.SetEditText(const Value: string);
begin
if Assigned(FOnSetText) then FOnSetText(Self, Value) else SetText(Value);
end;
現在、SetEditTextはプライベートメソッドであるため、宣言されているユニットの外を見る必要はありません。そして、それが使用される唯一の場所は、:のプロパティセッターとしてですTField.Text。
property Text: string read GetEditText write SetEditText;
次に、続行してそのプロパティが割り当てられている場所を探すことができますが、それが発生する場所はたくさんあります。したがって、これらすべてをデバッグする場合は、デバッグDCUを有効にして、内部にブレークポイントを設定する必要がありますTField.SetEditText。ブレークポイントが頻繁に発生することがわかった場合は、コンテンツにブレークポイント条件を設定することをValueお勧めします。