Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: MDI und benutzerdefinierte Stile

  Alt 1. Aug 2022, 14:45
BringToFront mag zwar gehen, aber es hilft nichts, wenn die Anwendung dennoch keinen Fokus (zurück)bekommt.

Ist eine Schutzfunktion für den Benuzer, welcher in Windows 10 (oder schon 8) eingebaut ist, damit kein "böses" Programm sich aktivieren kann und z.B. der Nutzer "Ausversehn" darin etwas bestätigt, weil er grade in einem anderen Programm, geistig schon halb weggetreten, mit [Enter] tausende Fenster/Dialoge bestätigt und urplörtlich ein fremdes Fenster vorhuscht.


Es gibt an Application eine Message/Event, wenn die Anwendung minimiert wird.
Wenn sie aber "nur" den Fokus verliert und nach hinten rutscht, dann natürlich nicht, aber da muß man sich eben an die FocusChange-Events des Screen (Screen.OnIrgendwas) hängen.



Das passiert z.B. gern, wenn ein Dialog oder ShowModal geschlossen wird, und zwischenzeitlich neue Fenster im Programm aufgingen, oder geschlossen wurden,
bzw. wenn man z.B. im OnClose ein anderes Fenster öffnet, aber Dieser erst kurz nach dem Hide/Free den Fokus bekommen wollte, wo dann für einen Bruchteil einer Sekunde Delphi nicht weiß, welchem Fenster es den Fokus geben will, dann geht der Fokus an NIL und das Programm verschwindet in den Hintergrund.

Delphi merkt sich das Fenster, was vor dem ShowModal/ShowMessage aktiv ist, und wenn dieses Fenster beim Schließen weg plötzlich ist, dann geht der Fokus gern verloren.
Es wäre schlauer, wenn es dann das nächste vorhandene aktivierbare eigene Fenster nehmen würde, aber so schlau ist Delphi nicht.
$2B or not $2B

Geändert von himitsu ( 1. Aug 2022 um 14:57 Uhr)
  Mit Zitat antworten Zitat