![]() |
High DPI für eigene Controls?
Hallo!
Ich habe meine Anwendung auf HighDPI umgestellt und es sieht nun auch auf den höchsauflösenden Bildschirmen gut aus. Bis auf die wenigen GUI-Komponenten, die ich selbst erstellt habe. Z.B. habe ich mir von einiger Zeit eine Komponente erstellt, die aus einem TPanel besteht, auf dem mehrere TComboBox und TImage platz genommen haben. Die Komponente wird als Package in Delphi installiert. Die GUI der Komponente wird komplett zur Laufzeit erstellt. Nach der Umstellung auf HighDPI habe ich nun das Problem, dass die GUI-Elemente der Komponente absolut falsch dargestellt werden, obwohl ich in der Quellcode überall MulDiv() gesetzt habe. Sogar die Schrift in den ComboBoxen ist mehrfach vergrössert. Bin gerade am verzweifeln, komme nicht weiter. Was mache falsch? |
AW: High DPI für eigene Controls?
Zitat:
"MulDiv()" sagt jetzt nicht wirklich was aus. Klar kannst/musst Du Positionen/Größen umrechnen, aber nur weil man eine Rechenoperation anwendet, heißt das ja noch nicht, dass man die richtigen Zahlen einsetzt. Bring doch mal ein paar Code-Beispiele, wie Du das genau handhabst. |
AW: High DPI für eigene Controls?
z.B. so erstelle ich ein Button für die GUI der Komponente:
Delphi-Quellcode:
FButtonFirst := TButton.Create(FPanelButtonsFirstPrew);
with FButtonFirst do begin Parent := FPanelButtonsFirstPrew; Width := MulDiv(16, Screen.PixelsPerInch, 96); Height := MulDiv(16, Screen.PixelsPerInch, 96); Top := MulDiv(4, Screen.PixelsPerInch, 96); Left := MulDiv(8, Screen.PixelsPerInch, 96); OnClick := ButtonFirstClick; end; |
AW: High DPI für eigene Controls?
Ich mache das alles manuell und verlasse mich da keines Falls auf irgendwelche mathematischen Funktionen wie MulDiv.
Ich lese einmalig die DPI aus und entscheide dann was wie groß wohin muss. Funktioniert bestens. |
AW: High DPI für eigene Controls?
Du solltest bedenken, daß beim Setzen von
Delphi-Quellcode:
bereits dessen DPI-Wert übernommen wird. Probier doch mal, den
Parent
Delphi-Quellcode:
als letztes zuzuweisen (ein konkretes, kleines Testprogramm wäre hier schön):
Parent
Delphi-Quellcode:
FButtonFirst := TButton.Create(FPanelButtonsFirstPrew);
with FButtonFirst do begin Width := 16; Height := 16; Top := 4; Left := 8; OnClick := ButtonFirstClick; Parent := FPanelButtonsFirstPrew; end; |
AW: High DPI für eigene Controls?
@Uwe Raabe
Vielen Dank! Oh Mann, das ist doch so offensichtlich mit dem Parent :oops: Nicht ganz offensichtlich ist es dagegen mit dem Font der ComboBox. Der ist nach wie vor extrem groß, wenn High DPI aktiv ist. |
AW: High DPI für eigene Controls?
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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 by Thomas Breitkreuz