Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form in den Vordergrund holen (https://www.delphipraxis.net/145686-form-den-vordergrund-holen.html)

Delphi-Laie 9. Jan 2010 11:16

Re: Form in den Vordergrund holen
 
Damit beschäftigte ich mich jüngst auch ausführlich.

Fenster in den Vordergrund setzen:

1. Eine notwendige, jedoch nicht ausreichende Bedingung ist, den Formstyle des Formulares auf Stayontop zu setzen. Nur nützt das nichts gegenüber anderen Fenstern/Formularen, die dieses Attribut ebenfalls so gesetzt haben, z.B. beim Taskmanager, der verdeckt das trotzdem frech. Deshalb:

2. Bei jedem sich bietenden Ereignis (Verdecken gehört leider nicht dazu, aber Neuzeichnen, wenn man ein über-/verdeckendes Formular wieder ein wenig wegzieht) oder über einen Timer einen der drei Befehle verwenden:

- BringToFront
- BringWindowToTop(Handle)
- SetForeGroundWindow(Handle)

Viel Erfolg!

patti 9. Jan 2010 14:10

Re: Form in den Vordergrund holen
 
Zitat:

Zitat von Delphi-Laie
Nur nützt das nichts gegenüber anderen Fenstern/Formularen, die dieses Attribut ebenfalls so gesetzt haben, z.B. beim Taskmanager, der verdeckt das trotzdem frech.

Das ist aber ja irgendwo auch logisch, denn es kann eben immer nur EIN oberstes Fenster geben. Bei einem Stapel Blätter kann ja auch nur immer eines wirklich oben liegen...

Beim Taskmanager ist es aber trotzdem so, dass ich ein anderes Fenster, welches auch StayOnTop ist, nach vorne holen kann, nämlich indem ich ihm ganz einfach den Fokus gebe.

mfg

Delphi-Laie 9. Jan 2010 14:33

Re: Form in den Vordergrund holen
 
Zitat:

Zitat von patti
Zitat:

Zitat von Delphi-Laie
Nur nützt das nichts gegenüber anderen Fenstern/Formularen, die dieses Attribut ebenfalls so gesetzt haben, z.B. beim Taskmanager, der verdeckt das trotzdem frech.

Das ist aber ja irgendwo auch logisch, denn es kann eben immer nur EIN oberstes Fenster geben. Bei einem Stapel Blätter kann ja auch nur immer eines wirklich oben liegen...

Natürlich ist das logisch, jedenfalls mit Sicherheit logischer, als daß es immer nur ein aktives Fenster gibt (man könnte nämlich durchaus auch die Benutzereingaben auf mehr als ein Fenster beziehen).

Zitat:

Zitat von patti
Beim Taskmanager ist es aber trotzdem so, dass ich ein anderes Fenster, welches auch StayOnTop ist, nach vorne holen kann, nämlich indem ich ihm ganz einfach den Fokus gebe.

Danke, das wußte ich noch nicht. Es setzt allerdings mal wieder Benutzereingaben an diesem Fenster voraus. Wie man ein Fenster, das ohne Nutzereingaben auskommt, auch dann in den Vordergrund holt, wenn es von einem anderen (stayontop-)Fenster mehr oder weniger verdeckt wird, schilderte ich weiter oben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.
Seite 2 von 2     12   

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