AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TPopupMenu mit HighDPI und Form-in-Panel Problem

TPopupMenu mit HighDPI und Form-in-Panel Problem

Ein Thema von CodeX · begonnen am 17. Mär 2020 · letzter Beitrag vom 26. Mär 2020
Antwort Antwort
Seite 1 von 2  1 2   
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#1

TPopupMenu mit HighDPI und Form-in-Panel Problem

  Alt 17. Mär 2020, 18:41
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:



PopupMenu auf Form2:



Skurril: Wenn das PopupMenu auf Form2 keine Bilder enthält, dann ist die Schriftgröße wiederrum korrekt:


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?
Miniaturansicht angehängter Grafiken
form1-correct.png   form2-incorrect.png   form2-withoutimages.png  
Angehängte Dateien
Dateityp: zip Vcl Menu HighDPI.zip (6,2 KB, 7x aufgerufen)
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 17. Mär 2020, 18:51
In 10.3.3 kann ich das Problem nicht reproduzieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 17. Mär 2020, 18:53
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...
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 17. Mär 2020, 21:43
Ich habe genau das heruntergeladen, mit 10.3.3 compiliert und auf einem Monitor mit 175% getestet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
477 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 18. Mär 2020, 07:57
Ich kann Uwes Aussage bestätigen. Mit 10.3.3 klappt es auf beiden Monitoren. (1. Monitor 100%, 2. Monitor 175%).
Bernd

Geändert von BerndS (18. Mär 2020 um 09:13 Uhr) Grund: Der Downloadzähler funktioniert
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#6

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

  Alt 18. Mär 2020, 08:36
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 18. Mär 2020, 10:04
@Bernhard Geyer
Naja, kommt eben auf den Eisatzzweck an. Funktioniert bis auf diese Geschichte hier auch alles problemlos.

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.

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.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 25. Mär 2020, 22:29
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?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 26. Mär 2020, 00:13
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:
Miniaturansicht angehängter Grafiken
26-03-_2020_00-08-51.png  
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#10

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

  Alt 26. Mär 2020, 00:24
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%?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.
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