Breite in Pixeln eines Text / caption in Delphi 7
-
21-09-2019 - |
Frage
Hier ist mein Problem, ich will tatsächliche Länge des Textes in Pixel wissen (beachten Sie, dass verschiedene Buchstaben unterschiedlicher Länge in einigen Schriftarten haben). Ich werde dies für eine bessere Spaltenbreite Einstellung in DBGrid verwenden.
Lösung
Sie können mit der Canvas.TextWidth
und Canvas.TextHeight
Funktionen.
Option 1, unter Verwendung der Leinwand von der Steuerung
WidthInPixels := Label1.Canvas.TextWidth('My Text');
Option 2, eine temporäre Leinwand zu schaffen (unter Verwendung eines TBitmap)
Function GetWidthText(const Text:String; Font:TFont) : Integer;
var
LBmp: TBitmap;
begin
LBmp := TBitmap.Create;
try
LBmp.Canvas.Font := Font;
Result := LBmp.Canvas.TextWidth(Text);
finally
LBmp.Free;
end;
end;
Andere Tipps
Wenn Sie eine Delphi-Komponente haben eine „Leinwand“ Eigenschaft hat, dann können Sie Component.Canvas.TextWidth verwenden. Zum Beispiel: die Breite des Textes von DBGrid erhalten Sie verwenden können:
DBGrid1.Canvas.TextWidth('Stack');
Hier können Sie komplette Referenz zu diesem Thema finden: Länge von Delphi-String in Pixel