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
Thema durchsuchen
Ansicht
Themen-Optionen

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
CodeX

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

TPopupMenu mit HighDPI und Form-in-Panel Problem

  Alt 17. Mär 2020, 17: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?
Angehängte Grafiken
Dateityp: png form2-withoutimages.png (13,0 KB, 119x aufgerufen)
Dateityp: png form2-incorrect.png (17,7 KB, 121x aufgerufen)
Dateityp: png form1-correct.png (18,6 KB, 124x aufgerufen)
Angehängte Dateien
Dateityp: zip Vcl Menu HighDPI.zip (6,2 KB, 8x 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

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

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

  Alt 17. Mär 2020, 17: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
475 Beiträge
 
Delphi 12 Athens
 
#3

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

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

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

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

  Alt 17. Mär 2020, 20: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
492 Beiträge
 
Delphi 12 Athens
 
#5

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

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

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

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

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

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


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 13:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz