標準イベント
イベントをコンポーネントに実装すると、コンポーネント内部で起こった出来事を外部へ知らせることができます。標準イベントとは、すべてのコントロールに対して定義されているイベントと、標準ウィンドウコントロールに対してのみ定義されている2種類があります。
イベントの一般知識
例
type TControl = class(TComponent) private FOnClick: TNotifyEvent; { メソッドポインタを収容するフィールドを宣言 } ・・・・ protected property OnClick: TNotifyEvent read FOnClick write FOnClick; end; 注意 TNotifyEvent = procedure(Sender: TObject) of object;
標準イベントの種類
イベント | コメント |
OnClick | |
OnDragDrop | |
OnEndDrag | |
OnMouseMove | |
OnDblClick | |
OnDragOver | |
OnMouseDown | |
OnMouseUp | |
OnEnter | 標準ウィンドウコントロールのみ |
OnKeyDown | 同上 |
OnKeyUp | 同上 |
OnKeyPress | 同上 |
OnExit | 同上 |
標準ウィンドウコントロールとはTButtonのようなWindows自身が持つコントロールです。
イベントを公開するには
そのイベントをpublic(またはpusblished)として再宣言します。
例
public property OnClick;
標準イベントの処理の変更
変更したいイベントハンドラをオーバーライドすると、そのイベント処理で標準以外の処理を追加できます。つぎの例はTButtonのOnClickでボタンが押された回数をカウントできるように変更したものです。
unit CountBtn; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type THisControl = class(TButton) private { Private 宣言 } FOnClick: TNotifyEvent; // OnClickメソッドポインタ FCount: Integer; protected { Protected 宣言 } property OnClick: TNotifyEvent read FOnClick write FOnClick; procedure Click; override; public { Public 宣言 } constructor Create(AOwner: TComponent); override; published { Published 宣言 } property Count: Integer read FCount; end; procedure Register; implementation procedure Register; begin RegisterComponents('Private', [THisControl]); end; // コンストラクタ constructor THisControl.Create(AOwner: TComponent); begin inherited Create(AOwner); FCount := 0; end; // クリックイベントハンドラ procedure THisControl.Click; begin inherited Click; Inc(FCount); end; end.