Das kannst Du mit dem TMessageManager (
Unit System.Threading einbinden) machen.
Senden, z.B. so:
TMessageManager.DefaultManager.SendMessage(NIL, TMessage<UnicodeString>.create('DeineNachrichtHier'));
In den units, wo die Nachricht empfangen werden soll, verwendest Du das hier:
TMessageManager.DefaultManager.SubscribeToMessage(TMessage<UnicodeString>, HandleManagerMessage);
Statt HandelManagerMessage, kannst Du auch direkt an dieser Stelle eine anonyme Procedure verwenden.
Hier sieht es dann so aus:
Delphi-Quellcode:
procedure TF_ViewMain.HandleManagerMessage (const sender: TObject; const M: TMessage);
begin
var s := (M as TMessage<UnicodeString>).Value;
if s = 'DeineNachrichtHier' then begin
...
end;
end;
Das unsubscribe am Ende nicht vergessen.
TMessageManager.DefaultManager.Unsubscribe(TMessage<UnicodeString>, HandleManagerMessage);
Notgedrungen Eigenwerbung, aber evtl. hilfreich, in meinem FireMonkey-Buch ("Cross-Platform Development mit Delphi 10.2 & FireMonkey" bei Amazon, Kapitel 9 "Senden und Empfangen von Botschaften mit dem TMessageManager" erfährst Du über ca. 8 Seiten mehr davon, incl. einiger Beispiele.