Thema: Delphi OnFocusLost-Event?

Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#12

Re: OnFocusLost-Event?

  Alt 13. Feb 2009, 10:39
BringToFront() ist beschränkt auf die Applikation.
Es wird nur sichergestellt, dass das Fenster ganz oben auf der Applikation steht.
Das bedeutet nicht, dass es grundsätzlich immer das oberste Fenster auf dem Desktop ist.
Jede andere Anwendung kann den Fokus erhalten und in den Vordergrund geholt werden.

Grund für BringToFront() ist folgende Erfahrung:
Wenn eine Delphi Anwendung z.B. eine Fehlermeldung (modal) anzeigt, kann es passieren dass durch einen Mausklick dieses Fenster hinter dem Hauptformular verschwindet.
Jeder Klick auf die Anwendung wird nur noch mit einem "Pling" quitiert; die Anwendung ist nicht mehr bedienbar.
Man muss mit Alt-Tab und Shift-Alt-Tab wieder auf die Anwendung umschalten, damit das modale Fenster in den Vordergrund geholt wird.
Bei einem nicht-modalen Fenster gilt Ähnliches:
der Benutzer startet einen Vorgang, ein nicht-modales Fenster mit der Rückmeldung was gerade passiert wird angezeigt.
Klickt der Benutzer jetzt auf das dahinterliegende Formular verschwindet das Rückmelde-Formular.
Das Programm reagiert jetzt scheinbar nicht mehr und der Benutzer weiss nicht was im Moment passiert.
Deshalb wird das Rückmelde-Formular regelmässig in den Vordergrund geholt.
Wenn man das Rückmelde-Formular nicht nach vorne holt, kommt der Benutzer womöglich auf die Idee, dass das Programm hängt und schiesst es im Taskmanager ab.
  Mit Zitat antworten Zitat