Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#17

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 19:14
Du kannst im Delphi mal ein paar Events loggen.
Screen.OnActiveControlChange/OnActiveFormChange
Application.xxx bzw. ApplicationEvents.OnActivate/OnDeactivate/OnRestore/OnModalBegin/OnModalEnd

Dann siehst'e wann/wo dein Fokus hin geht,
bzw. ein Haltepunkt, wenn er am verschwinden ist und dann im Debugger gucken von wo es ausgelöst wurde.

Beim Schließen von Delphi-Fenstern versucht an einigen Stellen die VCL den Fokus zurückzusetzen (lässt nicht Windows entscheiden wohin er geht).
Nimmst sich die VCL dann ein HWND für's MSDN-Library durchsuchenSetFocus, welches aber nicht mehr existiert, dann schmeißt Windows das Programm in den Hintergrund. (das wurde übrigens auch im SetForegroundWindow erwähnt)

Passiert z.B. gern, wenn man ein Fenster anzeigt, während oder kurz bevor ein anderes Fenster geschlossen wird.
Noch schöner, wenn man z.B. im OnClose ein ShowMessage oder ShowModal macht, denn Delphi hängt den Dialog ans aktuell aktive Fenster, aber Dieses verschwindet ja grade und es nimmt dabei auch gleich den Dialog mit ins Nirvana.



Sobald dein Programm einmal den Fokus verloren hat und er auf ein anderes Programm übergehen konnte (wenn Deines nicht das einzige sichtbare Programm ist), dann kann dein Programm sich den Fokus nicht selbstständig zurückholen. (außer zufällig trifft eine der erwähnten Bedingenen von SetForegroundWindow zu)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Feb 2021 um 19:22 Uhr)
  Mit Zitat antworten Zitat