Natural Multicast Events have been done to be... natural!
It is still Beta, but you can full-feel its power.
It is simple, but powerfull:
- Naturally add listeners to any event, even already signed events;
- Any event property can be extended naturaly to multicast;
- Anonymous listeners are supported;
- The multicast container is managed by the library itself;
- Events assigned in the dfm of a form will be called first;
First thing is to add the Natural.Multicast unit to the uses section of your unit.
uses
Natural.Multicast;
Create any class type of your flavor, I'd be using a Form, for instance.
TForm1 = class(TForm)
end;
var
Form1 := TForm1.Create(nil);
You can assign a local event method or not.
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//I'm the local event that will be called first!
end;
Create a listener class and start listening to events.
TListener = class
public
procedure OnShow(Sender: TObject);
end;
LListener := TListener.Create();
Form1.AddListener<TNotifyEvent>('OnShow', LListener.OnShow);
Or else, listen with an anonymous listener
Form1.AddListener<TNotifyEvent>('OnShow',
procedure(const ASelf: TObject; const AArgs: TArray<TValue>)
begin
//Notified by Form1 OnShow event
end);