Einzelnen Beitrag anzeigen

VCLVirtuoso

Registriert seit: 12. Mär 2024
3 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verwendung von TTitleBarPanel mit ModalPopupMode := pmAuto

  Alt 5. Apr 2024, 08:48
Du kannst für jedes Form individuell den PopupMode ändern oder z. B. explizit den PopupParent auf das aktive Form setzen, bevor Du ShowModal aufrufst, aber selbst wenn das funktioniert erfordert es natürlich auch eine entsprechende Änderung an vielen Stellen der existierenden Anwendung.

Ansonsten bleibt nur, die verantwortliche Stelle im VCL-Kode zu suchen und zu fixen. Tritt das Problem auch in Delphi 11.x auf? Falls nicht würde ich die Änderungen am VCL-Kode für "moderneres" Erscheinungsbild von MDI-Anwendungen im Verdacht haben; da wurde einiges verschlimmbessert, was auch nicht-MDI Anwendungen torpedieren kann.
Tatsächlich funktioniert es, sobald man
Code:
pmAuto
nicht nur global setzt sondern nochmal für jedes Fenster einzeln. Das ist etwas Aufwand, aber deutlich besser als der vorherige Hack. In der Zwischenzeit sind durch das globale
Code:
pmAuto
noch weitere Fehler aufgetreten, weil die Window Handles jedes Mal neu erzeugt werden (zB leere ComboBoxes, wenn die nicht bei jedem Form-Aufruf neu beschrieben werden).
In der Dokumentation zu PopupMode steht auch etwas dazu, das ich überlesen habe:
Zitat:
Die Eigenschaft PopupMode wird beim Aufruf der Methode ShowModal automatisch auf pmAuto gesetzt. Dies verursacht aber eine Neuerstellung des Fenster-Handle, was in der Regel nicht wünschenswert ist. Um die Neuerstellung von Fenster-Handles zu vermeiden, muss die Eigenschaft PopupMode vor dem Aufruf der Methode ShowModal explizit auf pmAuto gesetzt werden (z.B. zur Entwurfszeit).
Damit ist das Thema nun gelöst. Danke für die Hilfe!
  Mit Zitat antworten Zitat