Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fenster aktivieren ohne es anzuklicken... (https://www.delphipraxis.net/106707-fenster-aktivieren-ohne-es-anzuklicken.html)

bingo72 15. Jan 2008 11:43


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

mkinzler 15. Jan 2008 11:46

Re: Focusproblem unter Vista...
 
Das Fenster vielleicht, aber das Eingabefeld vielleicht nicht.

bingo72 15. Jan 2008 12:02

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!!

Bernhard Geyer 15. Jan 2008 12:31

Re: Focusproblem unter Vista...
 
Quellcode? XP/Vista-Theming aktiv?

turboPASCAL 15. Jan 2008 12:39

Re: Focusproblem unter Vista...
 
Zitat:

... code-intern wurde Focus auf das Fenster gesetzt ...
Für solche Dinge wie du es gern hättest würde ich den Focus auf das EditFeld
setzen und nicht auf das Fenster.

Aslo:

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  EditSoundSo.SetFocus;
end;
Zusätzlich sollte man sich auch mal die Taboder der Form ansehen.

bingo72 15. Jan 2008 12:45

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:
ShellExecute(0,
                         'open',
                         PChar(lExePath),
                         '',
                         PChar(lPath),
                         SW_SHOWNORMAL);
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'...????

Daniel Schuhmann 15. Jan 2008 12:56

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.

OregonGhost 15. Jan 2008 13:03

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?

bingo72 15. Jan 2008 13:32

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:
(* Explizit Focus setzen *)
  if self.CanFocus then begin
    self.SetFocus;
  end;
  Application.BringToFront;
Durch Application.BringToFront wird zwar der Task in der Leiste dunkelblau ist aber nachwievor nicht 'eingedrückt'...

LG
Thomas

bingo72 15. Jan 2008 14:30

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 22:25 Uhr.
Seite 1 von 2  1 2      

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