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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top