通常,事件只是可以在自定义子体中设置的常规属性。您基本上可以拦截事件并提供自己的控制器。
例如,我刚刚创建了一个覆盖OnEnter事件的组件…
interface
TmyWhatever = class(TWhateverAncestor)
private
fMyOnExit:TNotifyEvent
protected
procedure CustomOnExitEvent(Sender:TObject);
public
constructor Create(AOwner:TComponent); override;
published
//we provide our own OnExit event (to be set by the developer using this component)
property OnExit:TNotifyEvent read fMyOnExit write fMyOnExit
end;
implementation
constructor TmyWhatever.Create(AOwner:TComponent);
begin
inherited;
//setup our event in the parent
inherited OnExit := CustomOnExitEvent;
end;
procedure TmyWhatever.CustomOnExitEvent(Sender:TObject);
begin
//perhaps do custom work before the OnExit
//and then call the intercepted OnExit event, if needed
if Assigned(fMyOnExit) then
begin
fMyOnExit(Sender);
end;
//perhaps do custom work after the OnExit
end;