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 Nicht-modales Fenster verschwindet hinter Hauptfenster (https://www.delphipraxis.net/151799-nicht-modales-fenster-verschwindet-hinter-hauptfenster.html)

Codehunter 2. Jun 2010 07:36


Nicht-modales Fenster verschwindet hinter Hauptfenster
 
Hallo!

Ich ärgere mich mal wieder mit einem der alten Probleme des Fenstermanagements bei Delphi 5 herum. Wenn aus dem Hauptfenster ein zweites Fenster mit .Show aufgerufen wird (nicht .ShowModal) und anschließend mit ALT-TAB zu einem anderen Programm und zurück gesprungen wird, so liegt das Hauptfenster im Vordergrund und das zuletzt geöffnete Fenster dahinter.

Mein Ansatz ist jetzt, das jeweils zuletzt geöffnete Fenster-Handle zu puffern und dann bei einer Rückkehr ins eigene Programm wieder in den Vordergrund zu bringen. Gibt es denn eine Windows-Message die ich abfangen kann wenn die eigene Anwendung über Taskleiste oder ALT-TAB wieder aktiviert wird?

Grüssle
Cody

Progman 2. Jun 2010 07:51

Re: Nicht-modales Fenster verschwindet hinter Hauptfenster
 
OnActivate des HauptForms? Das wird immer aufgerufen, wenn das Programm den Fokus wieder erhält. Und wenn das zweite Fenster aktiv ist, einfach im OnActivate: Fenster2.BringToFront?

Codehunter 2. Jun 2010 11:18

Re: Nicht-modales Fenster verschwindet hinter Hauptfenster
 
Das funktioniert so interessanterweise nicht da in dieser Konstellation OnActivate nicht beim Hauptfenster ausgelöst wird was im Vordergrund liegt sondern OnActivate vom Kindformular welches im Hintergrund liegt (sehr sinnig *gg*)

Aber du hast mich auf eine Idee gebracht: TApplication hat auch ein OnActivate, damit kann ich mein Vorhaben umsetzen.

PS: Grüssle aus LSZ nach MHL ;-)

idefix2 2. Jun 2010 11:59

Re: Nicht-modales Fenster verschwindet hinter Hauptfenster
 
Ist es da nicht einfacher, im onactivate des zweiten fensters self.bringtofront auzfzurufen? Dan brauchst Du kein Fensterhandle puffern. Oder hab ich etwas falsch verstanden?

Codehunter 2. Jun 2010 12:12

Re: Nicht-modales Fenster verschwindet hinter Hauptfenster
 
Solange zum Zeitpunkt des Task-Wechsels nur ein Kindfenster offen war würde das funktionieren. Sobald aber mehr als ein Kindfenster offen war ist das Ergebnis, welches davon mit dem OnActivate kommt mehr oder weniger zufällig. Es kommt weder die Öffnungs- noch die Erstellungsreihenfolge zum tragen. Es ist wie gesagt ein altes Problem mit dem sich zu D5-Zeiten viele Coder rumgeschlagen haben. Ob das inzwischen bei neueren Versionen besser gelöst ist kann ich nicht sagen da mir solche "Kleinigkeiten" nie genug Anreiz waren, auf ein anderes Delphi umzusteigen :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 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