AGB  ·  Datenschutz  ·  Impressum  







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

TLabel.AutoSize und High DPI

Ein Thema von Alucard · begonnen am 3. Mai 2025 · letzter Beitrag vom 5. Mai 2025
Antwort Antwort
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
915 Beiträge
 
Delphi 12 Athens
 
#1

AW: TLabel.AutoSize und High DPI

  Alt 4. Mai 2025, 14:41
Das Projekt ist sprichwörtlich Jahrzehnte-alt... Das scheint sich langsam zu rächen
Das kann ich grade sehr gut nachvollziehen. Arbeite grade auch wieder an einem Programm, für das ich zum 20-jährigen Namens-Jubiläum Unterstützung für High-DPI einbauen möchte. Hört sich einfach an, ist aber dann doch ein Fass (fast) ohne Boden. (Wobei ich in dem Kontext auch ein paar andere Dinge im Code aufräume, die damit nur am Rande was zu tun haben.)

Das ist je nach Originalzustand mehr oder weniger viel Arbeit, aber es lohnt sich, imho.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Benutzerbild von Alucard
Alucard

Registriert seit: 9. Jan 2015
11 Beiträge
 
Delphi 12 Athens
 
#2

AW: TLabel.AutoSize und High DPI

  Alt 4. Mai 2025, 14:56
Um ehrlich zu bleiben, muss ich leider auch zugeben, dass das ziemliches Rumgestümper ist, das ich schon immer veranstalte... Ich mache Programmierung nur nebenher und mit Sicherheit wird keiner mit professionellen Kenntnissen meine Art und Weise zu arbeiten, auch nur im Ansatz gutheißen (können) - zu Recht vermutlich.

Ob ich die aktuell aus der Option von Uwe erwachsenden Probleme überhaupt angehen kann, hängt davon ab, ob ich eine Möglichkeit finde, das mein Programm am Ende auf dem skalierten und auch dem unskalierten Monitor vernünftig aussieht.
formerly known as Alcuard
(Man muss seinen eigenen Username schon richtig tippen können... )
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.735 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: TLabel.AutoSize und High DPI

  Alt 4. Mai 2025, 16:30
Nur so am Rande bemerkt: Testet Eure High DPI Änderungen unbedingt auch auf Systemen mit unterschiedlichen Scaling-Einstellungen. Ich habe immer wieder sehr viel Spaß damit, erst mit GExperts und jetzt auch mit zwei "normalen" Programmen. Die VCL macht definitiv nicht alles richtig. Und dann funktioniert endlich mit zwei Monitoren mit unterschiedlichem Scaling und ich denke, ich habe das Problem gelöst, da kommt dann der erste Kollege, der "nur" zwei Monitore mit 100% Scaling hat und beschwert sich, dass die Formulare völlig kaputt sind.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
915 Beiträge
 
Delphi 12 Athens
 
#4

AW: TLabel.AutoSize und High DPI

  Alt 4. Mai 2025, 19:41
Ich stelle hier am Entwicklungsrechner regelmäßig die Skalierung auf dem zweiten Monitor um, vor der Laufzeit, während der Laufzeit, hin- und her verschieben zwischen den beiden Monitoren ... ja, da kann einiges bei schief gehen. Spaßig können auch Formnulare sein, die bei der Änderung der Skalierung grade nicht sichtbar sind.

Die VCL macht definitiv nicht alles richtig.
Was ich aktuell am ärgerlichsten finde ist, dass Constraints (also z.B. MinWidth/MaxWidth) anscheinend bei Verwendung von VCL-Styles nicht automatisch skaliert werden beim Wechsel.

Und, @Alucard: Jeder hat mal "klein" angefangen, und niemand ist perfekt. Was ich bei meinem aktuellen Refactoring für Klöpse im Code von "früher" gefunden habe, möchte ich lieber gar nicht erzählen.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.

Geändert von Gausi ( 4. Mai 2025 um 19:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Alucard
Alucard

Registriert seit: 9. Jan 2015
11 Beiträge
 
Delphi 12 Athens
 
#5

AW: TLabel.AutoSize und High DPI

  Alt 5. Mai 2025, 07:23
Nochmal zur Sicherheit, ob ich den Unterschied bzw. die Konsequenzen daraus zwischen GDI und Monitor/V2 richtig verstehe...

Beispiel - ein Monitor mit 200%-Skalierung
a) Ich lege im Designer ein Panel auf meine Form mit Koordinaten (x,y)=(8,8) und Größe (w,h)=(30,10).
b) Das gleiche Panel, nur erzeuge ich es dynamisch zur Laufzeit über TPanel.Create mit den gleichen Werten.

Im Fall von GDI wird die Skalierung automatisch erzeugt, das Ergebnis ist für (a) und (b) optisch das gleiche.
Im Fall von Monitor/V2 werden nur die "statischen" Komponenten skaliert (a), alles was dynamisch erzeugt wird (b), muss sich Gedanken um die aktuelle Skalierung machen. Um also (a) wie (b) aussehen zu lassen, muss ich dynamisch das Panel mit (16,16) und (60,20) erzeugen.
Richtig?
formerly known as Alcuard
(Man muss seinen eigenen Username schon richtig tippen können... )
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: TLabel.AutoSize und High DPI

  Alt 5. Mai 2025, 09:07
Im Fall von Monitor/V2 werden nur die "statischen" Komponenten skaliert (a), alles was dynamisch erzeugt wird (b), muss sich Gedanken um die aktuelle Skalierung machen. Um also (a) wie (b) aussehen zu lassen, muss ich dynamisch das Panel mit (16,16) und (60,20) erzeugen.
Richtig?
Nein, aber du musst eventuell die Zuweisung des Parent erst nach dem Setzen der Größe machen. Jedes TControl wird mit 96dpi erzeugt und beim Zuweisen des Parent wird es entsprechend skaliert. Du kannst das einfach mal in einem kleinen VCL-Programm ausprobieren.

Für Anpassungen nach dem Zuweisen des Parents müssen alle hart-codierten oder auf 96dpi bezogenen Werte umgerechnet werden. Dabei helfen aber die verschiedenen ScaleValue Overloads des Controls.

Den möglicherweise größeren Aufwand hat mein bei der Umstellung aber eher mit den Icons.
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 15:32 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