Moin Moin,
wir haben in Delphi 11 ein kleines Problem. (leider hat D12 dafür andere Bugs)
Wir öffnen von einem
MDI-Fenster aus ein weiteres nicht-modales freies Fenster,
wenn das geschlossen wird, sollte der Fokus eigentlich wieder beim
MDI landen (dem letzten aktiven Fenster, davor),
aber er wandert stattdessen zum externen Fenster.
In Delphi 12 funktioniert es (scheinbar),
aber vermutlich auch nur, weil zusätzlich/zufällig im Delphi 12 der PopupMode/PopupParent komplett im Arsch ist (garnicht funktioniert).
Bzw. ich hoffe es funktioniert, weil Emba bezüglich
MDI viel repariert hat. (aber vermutlich geht es nur, weil PopupMode defekt ist ... wäre blöd, wenn wir den PopupMode-Fehler behoben bekommen)
PopupMode = explizit auf MainForm
also eigentlich sollten die externen Fenster immer über der MainForm liegen ... aber nee, mit Delphi 12 verschwinden die hinter der Main.
Außerdem wird die Main nicht mit in den Vordergrund geholt (vor andere Programme), wenn man ein anderes/freies Fenster aktiviert/focusiert.
im Anhang:
* MDICloseTest11.* ist das Delphi 11-Projekt/Kompilat
* MDICloseTest12.* ist das Delphi 12-Projekt/Kompilat
* [
MDI] erzeugt ein
MDI-Fenster (eingedockt)
* [Form] erzeugt eine normale Form (ausgedockt)
* [Modal] erzeugt eine normale modale Form
* [F2Test], [⋯] und [F2]-Taste im Edit öffnen eine kleine Form, welche ins Edit schreiben möchte, wenn [OK]
* [ESC]-Taste, [X] oder die Buttons schließen die kleine Form wieder
Test:
* [Form]
* [
MDI]
* [F2Test], [⋯] oder [F2]-Taste im Edit
* [Cancel] oder [X] ... oder auch [OK]
der Fokus sollte nun eigentlich wieder beim
MDI liegen (bei Delphi 11 nicht der Fall)
Bemerkt wird auch, dass beim EnumThreadWindows (also die Reihefolge für Micorosoft)
die Form1 und MainForm andersrum liegen (ja, Windows kennt global die
MDI nicht und "aktiv" ist statt der
MDI-Form immer die MainForm)
Außerdem lässt sich in Delphi 10 das freie Fenster hinder die MainForm schieben, obwohl es immer drüber liegen sollte (wegen zugewiesen PopupMode).
Bzw. liegt eine andere Anwendung über der MainForm und es wird ein freies Fenster aktiviert, dann bleibt die Main versteckt. (in Delphi 11 und davor kommt sie mit hoch)
Delphi 12.2 (29.0.53571.9782)
Ein Therapeut entspricht 1024 Gigapeut.