This repository was archived by the owner on Feb 24, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
TEventManager
Ivan Semenkov edited this page Oct 25, 2021
·
1 revision
TEventManager is a implementation of observer pattern. You can subscribe for events and by using event manager later fire different types of events.
uses
advutils.event;
type
TEventManager = class
Event is not a real object and to subscribe callback or fire it you need use event id.
type
TEventID = type Cardinal;
When event fires the subscribed event callback function triggered.
uses
advutils.event, utils.any;
type
TEventManager = class
public
type
TEventCallback = procedure (AData : TAnyValue) of object;
end;
As callback parameter in function will assigned TAny value.
Create new event manager can by call its constructor.
constructor Create;
uses
advutils.event;
var
manager : TEventManager;
begin
manager := TEventManager.Create;
FreeAndNil(manager);
end;
Subscribe for event can by subscribe procedure.
procedure Subscribe(AEventID : TEventID; ACallback : TEventCallback);
Multiple callbacks can be subscribed to each event.
uses
advutils.event, utils.any;
var
manager : TEventManager;
procedure Callback(AData : TAnyValue);
begin
writeln('It''s work!');
end;
begin
manager := TEventManager.Create;
manager.Subscribe(0, {$IFDEF FPC}@{$ENDIF}Callback);
FreeAndNil(manager);
end;
Fire event can by call run function. Returns True if event was runned. If runs event hasn't callback returns False.
function Run(AEventID : TEventID; AData : TAnyValue) : Boolean;
You can send any data when fire event by AData parameter. This data will send to callback function.
uses
advutils.event, utils.any;
var
manager : TEventManager;
begin
manager := TEventManager.Create;
manager.Run(0, TIntegerValue.Create(1));
FreeAndNil(manager);
end;