![]() |
Hat Fenster den Eingabefokus?
Hallo,
ich möchte wissen ob ein Fenster "vor" einem anderen Fenster des selben Programms ist bzw ob es den Eingabfokus hat. Das Problem mal am konkreten Beispiel: Ich habe ein Hauptformular und ein zusätzliches Fenster, welches ich nicht Modal anzeige. Im Hauptfenster läuft ein Timer. Dieser führt bestimmte Routinen aus. Das soll er aber nur machen wenn das Zweitfenster nicht den Eingabefokus hat. Ich habe es mit der Funktion "Zweitfenster.Focused" probiert. Da kommt aber immer false zurück. Nun hatte ich die Idee ob man nicht die z-Order der Fenster abfragen kann. Wenn das Zweitfenster den Fokus hat muß es in der z-Order ja über dem Hauptfenster liegen. Leider weiß ich jedoch nicht wie das funktioniert. Kann mir da jemand auf die Sprünge helfen oder hat wer eine andere Idee? Danke, Daniel |
Re: Hat Fenster den Eingabefokus?
Wenn du nicht vom Zweitfenster das focus abrufen kannst dann überprüf doch einfach ob das Hauptfenster den Fokus nicht hat. Dann weißt du doch das dass zweitfenster den Fokus hat.
MfG Steffen |
Re: Hat Fenster den Eingabefokus?
Das funktioniert leider auch nicht. Wenn ich vom Hauptform Focudes abfrage bekomme ich ebenso immer false als Ergebnis. Ich gehe davon aus, daß ich nur von dem aktuellen Eingabefeld "true" zurückbekomme.
Aber selbst wenn würde es auch nicht funktionieren. Der Timer soll auch ausgeführt werden wenn ein anderes Programm den Fokus hat. Nur halt nicht wenn das eigene Fenster vorn ist nicht. |
Re: Hat Fenster den Eingabefokus?
wie schauts aus mit
Delphi-Quellcode:
procedure Tform1.Timer1Timer(Sender: TObject);
begin if not form2.showing then begin //Hier deine Routinen end; end; |
Re: Hat Fenster den Eingabefokus?
Das funktioniert auch nicht, leider.
Zitat:
|
Re: Hat Fenster den Eingabefokus?
dann halt
Delphi-Quellcode:
"Mit Active kann festgestellt werden, ob das aktuelle Formular aktiv ist. Das aktive Formular empfängt alle Tastatureingaben. Wenn es eine Titelleiste enthält, wird das Formular mit den in der Systemsteuerung festgelegten Farben angezeigt.
procedure Tform1.Timer1Timer(Sender: TObject);
begin if not form2.active then begin //Hier deine Routinen end; end; Hat Active den Wert true, besitzt das Formular den Fokus. Ist die Eigenschaft auf false gesetzt, ist das Formular nicht aktiv." |
Re: Hat Fenster den Eingabefokus?
ja, so scheints zu funktionieren.
Danke! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz