![]() |
Fenster aktivieren ohne es anzuklicken...
Hallo Leute!!
In meiner Applikation hab ich ein Anmeldefenster, wo man einmalig nach der Installation die Seriennummer eingeben muß - Standard!! Der Cursor steht im ersten Edit-Feld und blinkt sobald das Anmeldefenster erscheint (code-intern wurde Focus auf das Fenster gesetzt) und wartet brav auf Eingaben. So funktioniert es tadellos seit Win 95(!!) ohne Probleme und am Code wurde in diesem Bereich auch nie etwas geändert. So nun zum Problem: Unter Vista steht zwar der Cursor blinkend auch im ersten Feld, aber Eingaben sind nicht mehr möglich... Erst wenn man mit der Maus das Fenster explizit anklickt, kann man Werte wieder eingeben....wie das?? Meines Verständnisses nach, hat doch ein Fenster den Focus wenn der Cursor im Eingabefeld blinkt oder nicht?? Hatte wer mal so einen Fall?? LG Thomas |
Re: Focusproblem unter Vista...
Das Fenster vielleicht, aber das Eingabefeld vielleicht nicht.
|
Re: Focusproblem unter Vista...
Muß mich korregieren, der gleiche Effekt ist auch unter XP!! Ist also nicht Vista-spezifisch...
Auffällig ist auch, daß in der Taskleiste, der Task nicht 'eingedrückt' bzw. aktiv ist. Dies wird der Task erst dann, wenn man das Fenster angeklickt hat!! |
Re: Focusproblem unter Vista...
Quellcode? XP/Vista-Theming aktiv?
|
Re: Focusproblem unter Vista...
Zitat:
setzen und nicht auf das Fenster. Aslo:
Delphi-Quellcode:
Zusätzlich sollte man sich auch mal die Taboder der Form ansehen.
procedure TForm1.FormShow(Sender: TObject);
begin EditSoundSo.SetFocus; end; |
Re: Focusproblem unter Vista...
Ich hab den Focus auf das Edit-Feld gesetzt...geht genauso wenig!!
Wie gesagt macht mir eher der Umstand Sorgen, daß in der Taskleiste der Task nicht 'eingedrückt' ist und ich versteh nicht warum?? Als erstes wird ein Setup-Programm gestartet und aus diesem heraus meine Applikation gestartet mit
Delphi-Quellcode:
Während das Setup-Programm läuft ist der Setup-Task in der Leiste 'eingedrückt', nach dem Start der Applikation ist der Task der Applikation aber nicht mehr 'eingedrückt'...????
ShellExecute(0,
'open', PChar(lExePath), '', PChar(lPath), SW_SHOWNORMAL); |
Re: Focusproblem unter Vista...
Es gibt seit Windows 2000 die (per Standard aktivierte) Option, dass sich aktive Anwendungen den Focus nicht "stehlen" lassen, wenn eine Hintergrundanwendung ein Dialogfeld öffnet. Ist eigentlich auch recht sinnvoll, damit man nicht, wenn man in Word einen Text schreibt, versehentlich irgendwelche Dialogfelder bestätigt.
Dein Problem hat sicher etwas damit zu tun. |
Re: Focusproblem unter Vista...
Ich glaube auch, dass das daher rührt, dass man der Vordergrundanwendung nicht mehr den Fokus stehlen können soll. Manchmal nervt das zwar, zum Beispiel wenn ein modales Fenster irgendwo im Hintergrund bleibt, aber so ist das eben. Kannst du nicht damit leben, dass die Benutzer gegebenenfalls selbst einmal das Fenster aktivieren müssen? Oder geht dein Problem mehr in die Richtung, dass das Fenster aktiv aussieht, weil der Cursor blinkt? Ist denn ein anderer Task "eingedrückt"? Welche Anwendung hat den Fokus, wenn deine gestartet wird?
|
Re: Focusproblem unter Vista...
Ich könnte damit leben, aber mein Chef nicht!! :-))
Da ich die Install-Exe aus einem Ordner aufrufe ist zunächst der Task des Ordners 'eingedrückt'!! Der Task des Installationsprogrammes ist 'eingedrückt' während der Installation... Nach der Installation wird das eigentliche Programm gestartet und das Installationsprogramm geschlossen. (Vielleicht macht dies Probleme??) Als erstes wird dann das Fenster mit der Seriennummer angezeigt und der Task des Hauptprogrammes ist nicht 'eingedrückt' sondern dafür wieder der Task des Ordners aus dem ich zu Beginn die Installation aufgerufen habe... Ich hoffe man kann sich den Ablauf nun einigermassen vorstellen.. Ich habe im FMAfterShow folgendes stehen - leider auch ohne gewünschten Erfolg:
Delphi-Quellcode:
Durch Application.BringToFront wird zwar der Task in der Leiste dunkelblau ist aber nachwievor nicht 'eingedrückt'...
(* Explizit Focus setzen *)
if self.CanFocus then begin self.SetFocus; end; Application.BringToFront; LG Thomas |
Re: Fenster bekommt einfach nicht den Focus...
Was ich in der Zwischenzeit auch noch rausfand:
Der Effekt tritt nur unmittelbar nach der Installation auf!!! (...also nach Aufruf mittels ShellExecute...) Startet man das Programm über den Shortcut, bekommt das Hauptprogramm sofort den Focus und in der Taskleiste ist der Task 'eingedrückt'!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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 by Thomas Breitkreuz