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
