Width in pixels of a text/caption in Delphi 7

Tofig Hasanov picture Tofig Hasanov · Oct 14, 2009 · Viewed 17.8k times · Source

Here is my problem, I want to know actual length of the text in pixels (note that various letters have different length in some fonts). I am going to use this for better column width adjustment in DBGrid.

Answer

RRUZ picture RRUZ · Oct 14, 2009

You can use the Canvas.TextWidth and Canvas.TextHeight functions.

Option 1, using the canvas of the control

WidthInPixels := Label1.Canvas.TextWidth('My Text');

Option 2, creating a temporary canvas (using a 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;