Hier ist mein Problem, ich möchte die tatsächliche Länge des Textes in Pixeln wissen (beachten Sie, dass verschiedene Buchstaben in einigen Schriftarten unterschiedliche Längen haben). Ich werde dies für eine bessere Anpassung der Spaltenbreite in DBGrid verwenden.
Antworten
Zu viele Anzeigen?Sie können die Canvas.TextWidth
y Canvas.TextHeight
Funktionen.
Option 1, Verwendung des Canvas des Steuerelements
WidthInPixels := Label1.Canvas.TextWidth('My Text');
Option 2, Erstellung einer temporären Leinwand (unter Verwendung einer 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;
Wael Dalloul
Punkte
21012
Wenn Sie eine Delphi-Komponente haben, die eine "Canvas"-Eigenschaft hat, können Sie Component.Canvas.TextWidth verwenden. Zum Beispiel: um die Breite des Textes von DBGrid zu erhalten, können Sie verwenden:
DBGrid1.Canvas.TextWidth('Stack');
Hier finden Sie eine vollständige Referenz zu diesem Thema: Länge der Delphi-Zeichenkette in Pixel