1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- program TestEvent;
- {$M+}
- type
- TNotifyEvent = procedure( Sender: TObject ) of object;
- THost = class
- FOnEvent: TNotifyEvent;
- procedure SetOnEvent( Value: TNotifyEvent );
- public
- constructor Create;
- procedure Trigger;
- procedure SayHello;
- published
- property OnEvent: TNotifyEvent read FOnEvent write SetOnEvent;
- end;
- TDummy = class
- procedure HandleEvent( Sender: TObject );
- end;
- constructor THost.Create;
- begin
- FOnEvent := nil;
- end;
- procedure THost.Trigger;
- begin
- if @FOnEvent <> nil then
- FOnEvent( Self )
- end;
- procedure THost.SetOnEvent( Value: TNotifyEvent );
- begin
- FOnEvent := Value
- end;
- procedure THost.SayHello;
- begin
- Writeln( 'Hello event' )
- end;
- procedure TDummy.HandleEvent( Sender: TObject );
- begin
- THost( Sender ).SayHello
- end;
- var
- Host: THost;
- Dummy: TDummy;
- begin
- Dummy := TDummy.Create;
- Host := THost.Create;
- with Host,Dummy do
- OnEvent := HandleEvent; // this is 57, 27 is ";"
- Host.Trigger;
- end.
|