Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TPopupMenu mit HighDPI und Form-in-Panel Problem (https://www.delphipraxis.net/203733-tpopupmenu-mit-highdpi-und-form-panel-problem.html)

CodeX 17. Mär 2020 17:41

TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Liste der Anhänge anzeigen (Anzahl: 4)
Ich habe leider ein Problem mit Delphi 10.3.1 festgestellt, bei dessen Lösung/Workaround ich um Eure Hilfe bitten möchte. (ich weiß nicht, ob es bei 10.3.3 auch noch so ist...)

Ich lade Form2 in einem Panel in Form1:
Delphi-Quellcode:
  Form2.Parent := Panel1;
  Form2.BorderStyle := bsNone;
  Form2.Align := alClient;
  Form2.Show;

Starte ich die Anwendung auf einem Bildschirm mit HighDPI wie z.B. 150%, dann funktioniert alles bis auf eine Ausnahme korrekt. Das einzige Problem sind die PopupMenus, die auf Form2 enthalten sind. Bei diesen werden zwar die Bilder und Item-Höhen korrekt skalliert, nicht jedoch die Schriftgröße.


PopupMenu auf Form1:
https://www.delphipraxis.net/attachm...1&d=1584465772


PopupMenu auf Form2:
https://www.delphipraxis.net/attachm...1&d=1584465780


Skurril: Wenn das PopupMenu auf Form2 keine Bilder enthält, dann ist die Schriftgröße wiederrum korrekt:
https://www.delphipraxis.net/attachm...1&d=1584465784

Nach einigem Ausprobieren habe ich festgestellt, dass es daran liegt, ob der Owner die Hauptform ist oder die im Panel geladene Form. Ich könnte natürlich alle PopupMenus, die irgendwo in meinem Programm vorkommen, auf die Hauptform legen, aber das möchte ich nicht. Als Alternative habe ich herausgefunden, dass es reichen würde, den Owner jedes einzelnen PopupMenus zur Laufzeit zu verlegen:
Delphi-Quellcode:
  Self.InsertComponent(Form2.PopupMenu2);
  Form2.Memo1.PopupMenu := Self.FindComponent('PopupMenu2') as TPopupMenu;
Das funktioniert dann zwar, aber es fühlt sich auch nicht richtig an.

Im Anhang füge ich das kleine Beispielprojekt zum Überprüfen an. Der Monitor muss natürlich entsprechend mit mehr als 100% eingestellt sein, um das Problem nachzuvollziehen.

Sieht jemand eine bessere Möglichkeit, das Problem zu lösen?

Uwe Raabe 17. Mär 2020 17:51

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
In 10.3.3 kann ich das Problem nicht reproduzieren.

CodeX 17. Mär 2020 17:53

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1459994)
In 10.3.3 kann ich das Problem nicht reproduzieren.

Code:
Vcl Menu HighDPI.zip (6,2 KB, 0x aufgerufen)
Entweder es wurde später gefixt oder Du hast nicht alles so konfiguriert, wie ich es in meinem Beispielprojekt. Denn dieses wurde bislang offenbar noch nicht heruntergeladen...

Uwe Raabe 17. Mär 2020 20:43

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Ich habe genau das heruntergeladen, mit 10.3.3 compiliert und auf einem Monitor mit 175% getestet.

BerndS 18. Mär 2020 06:57

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Ich kann Uwes Aussage bestätigen. Mit 10.3.3 klappt es auf beiden Monitoren. (1. Monitor 100%, 2. Monitor 175%).

Bernhard Geyer 18. Mär 2020 07:36

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Form in Form einbedden ist ja auch nicht etwas, was die VCL für alle Anwendungsfälle unterstützt.

Wir nutzen die gleiche Idee, nutzen aber ein Panel auf das alle Elemente liegen und setzen dort den Parent.

CodeX 18. Mär 2020 09:04

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
@Bernhard Geyer
Naja, kommt eben auf den Eisatzzweck an. Funktioniert bis auf diese Geschichte hier auch alles problemlos.

Zitat:

Zitat von Uwe Raabe (Beitrag 1460006)
Ich habe genau das heruntergeladen, mit 10.3.3 compiliert und auf einem Monitor mit 175% getestet.

OK, danke. Dann ist der Downloadzähler bei den Attachments wohl zeitverzögert.

Zitat:

Zitat von BerndS (Beitrag 1460025)
Ich kann Uwes Aussage bestätigen. Mit 10.3.3 klappt es auf beiden Monitoren. (1. Monitor 100%, 2. Monitor 175%).

Hm, dann wurde es wohl gefixt - eigentlich ja gut, aber ich kann aktuell nicht auf 10.3.3 updaten (zumindest nicht nur für diesen Bug).
Könnte jemand von Euch bitte Vcl.Menus von 10.3.3 mit 10.3.1 in WinMerge o.ä. vergleichen und schauen, was da für diesen Fall geändert wurde? Wahrscheinlich in TMenuItem.DoDrawText. Dann würde ich das erstmal direkt darin fixen, bis zum IDE-Update irgendwann.

CodeX 25. Mär 2020 21:29

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Ich habe das Demo-Projekt heute einem Bekannten geschickt, der es für mich unter Delphi 10.3.3 kompiliert hat.
Beim Resultat ist mir dann erst aufgefallen, dass beim PopupMenu2 auf Form2 die Image-Liste nicht zugewiesen ist! Das hatte ich vor diesem Thread kurz entfernt, um zu zeigen, dass das Problem ohne Bilder nicht besteht (siehe mein dritter Screenshot oben).

Weist man "Form1.VirtualImageList1" PopupMenu2.Images (auf Form2) zu, dann ist auch bei Version 10.3.3 exakt das beschriebene Problem!


Ist denn keinem aufgefallen, dass die Bilder fehlen und ich mit Screenshots beschrieben hatte, dass das Problem ohne Bilder nicht auftritt? :(

Könntet Ihr das bitte mit der genannten Änderung nochmal testen?
Vielleicht hat ja unter Berücksichtigung der Tatsache, dass dieses Problem in der aktuellsten Delphi-Version weiterhin besteht, doch jemand einen Vorschlag, wie man das am besten lösen könnte?

Uwe Raabe 25. Mär 2020 23:13

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Schrei doch nicht so.

Natürlich habe ich die Imagelist angebunden bevor ich das probiert habe. Und so sieht das hier auf meinem 175% Monitor aus:

CodeX 25. Mär 2020 23:24

AW: TPopupMenu mit HighDPI und Form-in-Panel Problem
 
Sorry, wenn das geschriehen rüberkam (sind dafür nicht Großbuchstaben gedacht?). Ich wollte nur die relevanten Teile hervorheben, falls wem der Text zu lang ist.

Ist Dein Primärmonitor auf 100% und ein weiterer Monitor auf 175%?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz