Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MDI-Minimized-Problem

  Alt 21. Mär 2022, 17:23
Das Problem ist, dass dabei das Neuerstellen der Menüs aufgerufen wird. Und das geht dann maximiert offenbar schief.

Man kann das spezielle Problem patchen indem man die Methode TMenuItem.MenuChanged aus Vcl.Menus auf eine eigene Methode umleitet und dort die Originalmethode mit False als Parameter aufruft. Die Frage ist, was das für Folgen hat, wenn man das Neuerstellen der Menüs deaktiviert.

Das Problem ist, dass MDI als Technik seit fast 30 Jahren nicht mehr empfohlen und seit 20 Jahren als veraltet markiert ist und es von Microsoft keine Bugfixes oder Unterstützung dafür mehr gibt. Unter Windows 10 haben die Probleme noch einmal deutlich zugenommen.

Abseits der Umleitung virtueller Methoden gibt es nur die Billigvariante, die dir sicher auch schon eingefallen ist:
Delphi-Quellcode:
    WindowState := wsNormal;
    FItem.Caption := 'Neuer Text';
    WindowState := wsMaximized;
Allgemein macht es natürlich Sinn ein Ticket bei Embarcadero aufzumachen. Ich würde allerdings aufgrund des Warnhinweises in der Doku vermuten, dass du damit wenig erreichen wirst:
Zitat:
The Per Monitor V2 (and many of the other High-DPI features in Windows) have no support for the MDI child windows model. Microsoft has stopped addressing bugs reported for MDI, and we recommend migrating to a different multi-windows model (multiple floating windows, docked panes, tabbed windows, etc.)
Quelle

Persönlich kann ich nur dazu raten MDI so schnell wie möglich zu entfernen bevor es noch massivere Probleme damit gibt oder Microsoft es am Ende wirklich ganz entfernt...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat