Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MultiView als NavigationPane während Dialoganzeige in Hintergrund halten (https://www.delphipraxis.net/195336-multiview-als-navigationpane-waehrend-dialoganzeige-hintergrund-halten.html)

Guido R. 20. Feb 2018 16:23


MultiView als NavigationPane während Dialoganzeige in Hintergrund halten
 
Hallo !

In einer Android-App setze ich die MultiView im Modus NavigationPane ein.
Bei einer Nachfrage innerhalb des Programms zeige ich einen "Dialog" an, indem ich ein Layout (mit halbtransparenten Hintergrund-Rectangle, Buttons etc.) auf die Form lege, Align auf Client setze und mit BringToFront die eigentlichen Programmcontrols überlagern lasse.
Dies klappt wunderbar beim ersten Aufruf. Wenn ich dann aber, z.B. durch drehen des Geräts ein Resize auslöse, setzt sich die MultiView vor das Dialog-Layout. BringToFront (auf das Layout) bzw. SendToBack (auf MultiView) reagieren da nicht.
Die Größe des Layouts wird offenbar korrekt gesetzt, da Teile davon unter der MultiView verschwinden. Blöd an der Situation ist insbes. dass dadurch die Schaltflächen der MultiView anklickbar sind.

Hat jmd. eine Idee, wie man die MV im Hintergrund halten kann ?

LLAP
Guido R.

Rollo62 20. Feb 2018 17:54

AW: MultiView als NavigationPane während Dialoganzeige in Hintergrund halten
 
Nimm Content statt Client, der legt sich über Alles.
Lege dir statt BringToFront lieber ein geschachteltes Layout an so das dein CoverLayout immer über dem MultiView und dem Rest des Views liegt.

Dann sollte das Visible := True; für das Layout reichen.

BringToFront, etc. bringt bei FMX nicht so viel, besser die Z-Order direkt in der Layout-Struktur richtig anlegen.

Edit:
Wenn du native Controls benutzt funktioniert das mit der Z-Order aber nicht immer.
Das geht nur wenn FMX alle Controls selber zeichen kann, also bei Styled Controls.

Rollo

Guido R. 20. Feb 2018 19:23

AW: MultiView als NavigationPane während Dialoganzeige in Hintergrund halten
 
Content statt Client hat hier nichts gebracht...

...allerdings habe ich in einem kleinen Testprogramm mal die MultiView und das Panel (TargetControl der MV) in ein eigenes Layout gepackt.
Damit funktioniert's dann (zumindest im Testprogramm). Ich probiere es morgen mal an der eigentlichen App...

Danke für die Idee !

Rollo62 21. Feb 2018 06:12

AW: MultiView als NavigationPane während Dialoganzeige in Hintergrund halten
 
So meinte ich das.
Man kann Alle Komponenten schön verschachteln, und damit die Z-Order festlegen.

Content bringt was wenn mehrere Komponenten nebeneinanderliegen, dann legt sich Content über Alles, selbst wenn andere Komponenten mit Client+Top+Bottom würde sich entsprechend den Platz aufteilen.
Das funktioniert aber nicht immer bei nativen Komponenten, WebBrowser, etc.

Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz