AGB  ·  Datenschutz  ·  Impressum  







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

Listox: ItemHeight <--> Font.height

Ein Thema von Mattze · begonnen am 3. Sep 2018 · letzter Beitrag vom 4. Sep 2018
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

AW: Listox: ItemHeight <--> Font.height

  Alt 3. Sep 2018, 10:14
Hallo,

erstmal zu Uwe:
Font.height passt sich bei Änderung von FFont.size automatisch an.
ItemHeight aber nicht. Das ist davon formal unabhängig!

Zu Amateurprofi:
Leider kann ich das TextHeight vom Lsitbox.Canvas nicht benutzen. Zu der Zeit, wo ich es brauche, habe ich nur Font.size bzw. Font.height. Ich "spiele"mit mehreren Fonts in einer eigenen Komponente von TCustomListbox.

Mit meiner Version bin ich eigentlich recht zufrieden und das "+ 8" scheint auch zu stimmen.
Scheint!!!??? Ich frage dennoch. Sicherheitshalber!!!

Gruß Mattze
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Listox: ItemHeight <--> Font.height

  Alt 3. Sep 2018, 10:33
Hallo,

erstmal zu Uwe:
Font.height passt sich bei Änderung von FFont.size automatisch an.
ItemHeight aber nicht. Das ist davon formal unabhängig!

Zu Amateurprofi:
Leider kann ich das TextHeight vom Lsitbox.Canvas nicht benutzen. Zu der Zeit, wo ich es brauche, habe ich nur Font.size bzw. Font.height. Ich "spiele"mit mehreren Fonts in einer eigenen Komponente von TCustomListbox.

Mit meiner Version bin ich eigentlich recht zufrieden und das "+ 8" scheint auch zu stimmen.
Scheint!!!??? Ich frage dennoch. Sicherheitshalber!!!

Gruß Mattze
Die Höhe der Schrift kannst du auch ohne ListBox.Canvas holen.
Zum Beispiel so:

Delphi-Quellcode:
FUNCTION FontHeight(Font:TFont):Integer;
var DC:HDC; OldFont:HFONT; Metrics:TTextMetric;
begin
   DC:=GetDC(0);
   try
      OldFont:=SelectObject(DC,Font.Handle);
      GetTextMetrics(DC, Metrics);
      SelectObject(DC,OldFont);
   finally
      ReleaseDC(0,DC);
   end;
   Result:=Metrics.tmHeight;
end;
Mit FontHeight(ListBox.Font) kriegst du die Höhe der Schrift.
Das von Dir verwendete FontHeigth + 8 halte ich für etwas unglücklich.
Bei sehr kleinem Font.Size werden die Zeilen (für meinen Geschmack) zu hoch, dagegen bei sehr großem Font.Size eventuell zu niedrig.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: Listox: ItemHeight <--> Font.height

  Alt 3. Sep 2018, 11:24
Hallo,

danke für den Tipp zur Ermittlung der Schrifthöhe.
Offenbar habe ich aber nicht richtig beschrieben, worum es mir eigentlich geht.
Es geht mir nämlich eigentlich nicht um die Höhe der Schrift. Die habe ich mit -Font.height in Pixeln.
Mir geht es um die sinnvolle Breite der Zeile, wenn man so will "des Balkens" bei der Anwahl.
Also eigentlich über die Pixel, die über und unter der Schrift in der Zeile sind.
Die 8 (4 oben, 4 unten) habe ich daher, dass ich das mal mit einem Pixellineal ausgemessen habe. Da scheint das 8 Pixel mehr als die Schriftgröße zu sein.
Vielleicht sind es aber auch nur 6 oder nicht konstant oder oder...
Besser: Wie kann man das berechnen? Eigentlich wohl eine Art MeasureItem. Leider habe ich dazu bisher in den Quellen der Listbox usw. nix gefunden. (Ich habe Delphi 7 pro)

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Listox: ItemHeight <--> Font.height

  Alt 3. Sep 2018, 11:49
Font.height passt sich bei Änderung von FFont.size automatisch an.
ItemHeight aber nicht. Das ist davon formal unabhängig!
Vielleicht reden wir von verschiedenen Dingen. Ich mache ein neues VCL-Form Projekt in Delphi 10.2.3 Tokyo auf und platzieren eine TListBox auf das Form. Jetzt habe ich bei der ListBox ein ItemHeight = 13, Font.Size = 8 und Font.Height = -11. Ändere ich nun Font.Size auf 10, dann bekomme ich Font.Height = -13 und ItemHeight = 16.
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 19: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