delphi:system.messaging
System.Messaging{.pas}
Wie versende ich Programmintern Nachrichten?
Erst mal eine private Nachricht registrieren:
type TDisableAllMessage = Class(System.Messaging.TMessage<Boolean>);
Zum Beispiel im Create der Form:
DisableMSGID := FMXMessage.SubscribeToMessage(TDisableAllMessage, Procedure(Const Sender:TObject;Const M:TFMXMessage) begin Foo.Enabled := not(TDisableAllMessage(M).Value); Baa.Visible := not(TDisableAllMessage(M).Value); end);
Im Destroy des Forms
FMXMessage.Unsubscribe(TDisableAllMessage,DisableMSGID,true);
So können sind alle Forms registrieren..
Benutzt wird es dann so…
begin FMXMessage.SendMessage(sender,TDisableAllMessage.Create(true)); // Alle Controls werden Visible/Enable := false; // Mach was tolles FMXMessage.SendMessage(sender,TDisableAllMessage.Create(false)); // Alle Controls werden Visible/Enable := true; end;
oder auch gerne mal im Thread?
begin TTask.Run(Procedure begin // bla blub machwas... TThread.Synchronize(nil,// VCL bzw. FMX immer mit! Procedure () begin FMXMessage.SendMessage(sender,TDisableAllMessage.Create(true)); // Alle Controls werden Visible/Enable := false; end); // Mach noch was im Hintergrund Thread.Queue(nil,// aktivieren wenn der Systemkern dafür Zeit hat... Procedure () begin FMXMessage.SendMessage(sender,TDisableAllMessage.Create(false)); // Alle Controls werden Visible/Enable := true; end); end); end;
delphi/system.messaging.txt · Zuletzt geändert: 2015/03/14 22:41 von mavarik