Vielleicht hat ja jemand was Ähnliches und bereits eine "schöne" Lösung dafür.
So, auch in 12.3 ist der PopupMode-Fehler noch enthalten.
and it did compile and ran fine on XE8 without problem
Das sorgt eh nur dafür, dass Fenster minimiert werden, wenn sie ein sich öffnendes
MDI verdecken würden.
Nun ja, alte Programme lassen sich nicht so leicht umbauen.
Ich hatte vor einer Weile mal ausprobiert, ob sich irgendeine Variante für Docking nutzen ließe, aber leider gab es überall Dinge, welche für unsere Anwendung zu inkompatibel waren, also vom Verhalten her.
http://fnse.de/DockingDemos.7z
Ja, ich denke auch, dass auf Windows-Seite die Z-Order ein Problem ist.
Die MainForm ist ja immer unten, die
MDI sind immer da drin, also kommen sie immer zuletzt,
außer jetzt, wo in Delphi12 der PopupMode nicht funktioniert.
Es gibt im Delphi und Windows halt nur diese zwei Fenster-Listen, auf welche wir uns beziehen könnten,
aber wenn sie hier keine passende Reihenfolge bieten, dann müsste das entweder repariert werden (Screen.Forms) oder wir brauchen eine eigene Liste (würde ich aber gern vermeiden, also dass hier überhaupt eigener Code dafür nötig wäre).
Eigentlich sollte in Delphi die Liste der Screen.Forms die richtige Aktivierungs-Reihenfolge enthalten, dachte ich,
aber leider ist auch diese Fenster-Liste nicht brauchbar.
(aktuell sieht es so aus, als wenn ich mir eine LastActiveForms-Liste selbst aufbauen)
Wir haben an vielen Stellen im Programm eben Codes, welche den Fokus zwischen Fenstern steuert.
Einen Großteil hatten wir inzwischen ausgebaut und dachten nun Weiteres entfernen zu können.
Da stammte vieles noch aus Delphi 7 und Delphi XE ... insgesamt gibt es auch Teile, die gehen noch auf TurboPascal zurück.
Delphi/Embarcadero hatte auch öfters eigene solcher Stellen in der
VCL etwas umgebaut, so dass es schon mehrmals zu Konflikten kam,
weswegen wir eben gern viel, "eigentlich" unnötigen, Code entfernen würden, wenn die
VCL das selbst ordentlich hinbekommt.
Auf einen zeitnahen oder überhaupt auf einen Bugfix durch Embarcadero setze ich nicht mehr. Zu oft haben die enttäuscht, selbst wenn man ihnen die Lösung gibt,
so dass wir schon mehrmals viele Wochen an Arbeit investieren mußte, obwohl Emba das Problem mit 2 Zeilen Code (zwei Variablen auf 0 setzen) hätten lösen können (bei der Form-Vererbung).
Ein Therapeut entspricht 1024 Gigapeut.