プロパティとしてのイベント
イベントとは何か への移動
コンポーネントでは、プロパティを使用してイベントを実装しています。他のほとんどのプロパティとは異なり、イベントでは、メソッドを使用して read 部と write 部を実装するわけではありません。代わりに、イベント プロパティでは、そのプロパティと同じ型の private クラス フィールドを使用します。
慣例的に、このフィールドの名前は、プロパティの名前の先頭に文字 F を付けたものになります。たとえば、OnClick メソッドのポインタは、TNotifyEvent 型の FOnClick というフィールドに格納されます。OnClick イベント プロパティの宣言は次のようになります。
type TControl = class(TComponent) private FOnClick: TNotifyEvent; { declare a field to hold the method pointer } . . . protected property OnClick: TNotifyEvent read FOnClick write FOnClick; end;
class PACKAGE TControl : public TComponent { private: TNotifyEvent FOnClick; . . . protected: __property TNotifyEvent OnClick = {read=FOnClick, write=FOnClick}; . . . };
TNotifyEvent などのイベント型については、次のセクション「メソッド ポインタ型としてのイベント型」を参照してください。
他のどのようなプロパティでも同様ですが、イベントの値を実行時に設定または変更することができます。ただし、イベントをプロパティとする主な利点は、コンポーネント ユーザーが[オブジェクト インスペクタ]を使って、設計時にイベントにハンドラを割り当てることができることです。