Einzelnen Beitrag anzeigen

Amateurprofi

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

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

  Alt 3. Sep 2018, 11: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