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
 
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
 


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 20:55 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