Skip to content

TEventManager

Ivan Semenkov edited this page Oct 25, 2021 · 1 revision

Table of contents

About

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

TEventID

Event is not a real object and to subscribe callback or fire it you need use event id.

type
  TEventID = type Cardinal;

TEventCallback

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

Create new event manager can by call its constructor.

constructor Create;
Example
uses
  advutils.event;
  
var
  manager : TEventManager;
  
begin
  manager := TEventManager.Create;
  
  FreeAndNil(manager);
end;

Subscribe

Subscribe for event can by subscribe procedure.

procedure Subscribe(AEventID : TEventID; ACallback : TEventCallback);

Multiple callbacks can be subscribed to each event.

Example
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;

Run

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.

Example
uses
  advutils.event, utils.any;

var
  manager : TEventManager;
  
begin
  manager := TEventManager.Create;
  manager.Run(0, TIntegerValue.Create(1));
  
  FreeAndNil(manager);
end;