標準イベント
イベントをコンポーネントに実装すると、コンポーネント内部で起こった出来事を外部へ知らせることができます。標準イベントとは、すべてのコントロールに対して定義されているイベントと、標準ウィンドウコントロールに対してのみ定義されている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.