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.