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
 
Benutzerbild von Alucard
Alucard

Registriert seit: 9. Jan 2015
8 Beiträge
 
Delphi 12 Athens
 
#1

TLabel.AutoSize und High DPI

  Alt 3. Mai 2025, 13:29
Ich bin es mal wieder mit einem High DPI-Problem... Dieses Mal betrifft es das AutoSize von TLabel.

Ausgangsszenario:
  • gegeben sei eine Tabellen-artige Struktur, die zur Laufzeit zeilenweise erzeugt wird
  • jede Zeile besteht aus einem TPanel, auf dem mehrere TLabels liegen
  • den Labels wird Text zugewiesen
  • abschließend werden die Labels links- oder rechtsbündig ausgerichtet, wobei TLabel.Width die wesentliche Eigenschaft ist
Code:
procedure TFormBib.AddTrackGridEntry;
const TrackGridEntry : integer = 22;
var i : byte;
begin
//Trackgrid verlängern
SetLength(TrackGrid, Length(TrackGrid) + 1);

With TrackGrid[High(TrackGrid)] do
     begin
     Track  := TPanel.Create(Self);
     Nummer := TLabel.Create(Self);
     {...}

     Track.Parent  := ScrollBoxPlayTracks;
     Nummer.Parent := Track;
     {...}
     end;

With TrackGrid[High(TrackGrid)].Track do
     begin
     ParentBackground := false;

     BevelOuter := bvNone;
     BevelInner := bvNone;

     Top    := TrackGridEntry * High(TrackGrid);
     Height := TrackGridEntry;

     If High(TrackGrid) mod 2 <> 0
        then Color := clGray
        else Color := clMedGray;
     end;

With TrackGrid[High(TrackGrid)] do
     For i := 0 to Track.ControlCount - 1 do
         If Track.Controls[i] is TLabel
            then With (Track.Controls[i] as TLabel) do
                       begin
                       Top := 2;
                       Font.Color := clBlack;
                         
                       Transparent := false;  //nur für den Test
                       Color       := clTeal; //nur für den Test
                       end;
end;
Ich nutze das Programm entweder auf einem Monitor mit 200%-Skalierung oder auf einem Monitor ohne Skalierung, daher ist "Projekt -> Optionen -> Manifest -> DPI-Unterstützung" auf "GDI-Skalierung" gesetzt (Ist das sinnvoll?!). Leider wird das gewünschte Ergebnis (siehe Anhang "gut") nur auf dem Monitor ohne Skalierung erreicht, auf dem skalierten Monitor sind die Labels manchmal zu klein, manchmal zu groß, manchmal auch passend - was final natürlich die Ausrichtung verhagelt (siehe Anhang "schlecht"). Alternativ kann ich die DPI-Unterstützung auch auf "Keine" setzen, dann passen die Labels auch auf dem skalierten Monitor - allerdings sieht dann das ganze Programm wie verpixelte Moppelkotze aus :-/

Irgendwelche Ideen, warum AutoSize sich hier so erratisch verhält?

P.S.: Vermutlich fehlt zu einer geistreichen Beantwortung hier mal wieder wichtiger Input... Ich weiß nur nicht, wo ich da anfangen soll, einfach nachfragen bitte
Angehängte Grafiken
Dateityp: png gut.png (23,3 KB, 45x aufgerufen)
Dateityp: png schlecht.png (30,2 KB, 42x aufgerufen)
formerly known as Alcuard
(Man muss seinen eigenen Username schon richtig tippen können... )
  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 02:52 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