Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Firemonkey und OnModalBegin/OnModalEnd

  Alt 4. Mai 2017, 18:00
Ich glaube dem Thread-Ersteller geht es weniger um die Frage, wie man das Formular abblendet, sondern, wie man an die Information gelangt, wann ein eigenes modales Formular angezeigt wird.

Es gibt zwar in der Tat kein OnModalBegin/OnModalEnd unter FiremMonkey, aber FMX arbeitet auch selber mit dem TMessageManager, um im System bestimmte Botschaften zu senden und darauf reagieren zu können.

Da kannst Du Dich einfach einklinken, im Oncreate-Event der Mainform nimmst Du auf:

Delphi-Quellcode:
 TMessageManager.DefaultManager.SubscribeToMessage (TFormBeforeShownMessage,
   procedure (const sender: TObject; const M: TMessage)
   begin
     // Diese Prozedur wird nun immer aufgerufen, wenn eine Form im Programm Modal angezeigt wird
     FadeTransitionEffect1.Enabled :=True; // z.B. ein TLayout als Parent in der Mainform, dass diesen Effekt hat
   end);
Die Unit System.Messaging wird benötigt.

Den Effekt kannt Du dann im Activate-Event der Mainform wieder ausschalten (oder Du schreibst Dich zusätzlich mit dem Message-Manager in die Activate-Botschaft ein).

Hinweis 1: Habe hier den DefaultMessage-Manager verwendet, bei Bedarf kann man einem eigenen erstellen ([Eigenwerbung an: ]falls Dir das Thema MessageManager nichts sagt, findest Du bei Bedarf in meinem neuesten FMX-Buch Informationen dazu in einen eigenen Kapitel zum TMessageManager (Kapitel 9)[/Eigenwerbung aus]).

Hinweis 2: Beim Aufruf von "ShowMessage" funktioniert das nicht, da das intern anders gehandelt wird, da musst Du selber eine ShowMessage-Funktion erstellen, die zuvor den Effekt macht und danach ihn wieder aufhebt.

Siehe auch anliegenden Screenshot.
Miniaturansicht angehängter Grafiken
modal.jpg  

Geändert von Harry Stahl ( 5. Mai 2017 um 06:20 Uhr)
  Mit Zitat antworten Zitat