AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

High DPI für eigene Controls?

Ein Thema von uups · begonnen am 31. Okt 2018 · letzter Beitrag vom 31. Okt 2018
Antwort Antwort
uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#1

High DPI für eigene Controls?

  Alt 31. Okt 2018, 10:55
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?
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#2

AW: High DPI für eigene Controls?

  Alt 31. Okt 2018, 11:44
Bin gerade am verzweifeln, komme nicht weiter. Was mache falsch?
Ich würde vermuten: die Umrechnung?

"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.
  Mit Zitat antworten Zitat
uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#3

AW: High DPI für eigene Controls?

  Alt 31. Okt 2018, 12:02
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;
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#4

AW: High DPI für eigene Controls?

  Alt 31. Okt 2018, 12:40
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: High DPI für eigene Controls?

  Alt 31. Okt 2018, 12:42
Du solltest bedenken, daß beim Setzen von Parent bereits dessen DPI-Wert übernommen wird. Probier doch mal, den Parent als letztes zuzuweisen (ein konkretes, kleines Testprogramm wäre hier schön):
Delphi-Quellcode:
FButtonFirst := TButton.Create(FPanelButtonsFirstPrew);
with FButtonFirst do
begin
  Width := 16;
  Height := 16;
  Top := 4;
  Left := 8;
  OnClick := ButtonFirstClick;
  Parent := FPanelButtonsFirstPrew;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
uups

Registriert seit: 23. Aug 2004
68 Beiträge
 
#6

AW: High DPI für eigene Controls?

  Alt 31. Okt 2018, 17:20
@Uwe Raabe
Vielen Dank! Oh Mann, das ist doch so offensichtlich mit dem Parent
Nicht ganz offensichtlich ist es dagegen mit dem Font der ComboBox. Der ist nach wie vor extrem groß, wenn High DPI aktiv ist.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: High DPI für eigene Controls?

  Alt 31. Okt 2018, 19:58
Nicht ganz offensichtlich ist es dagegen mit dem Font der ComboBox. Der ist nach wie vor extrem groß, wenn High DPI aktiv ist.
Immer noch:
(ein konkretes, kleines Testprogramm wäre hier schön)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 23:23 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