Search code examples
delphifont-sizecolumn-widthcaption

Width in pixels of a text/caption in Delphi 7


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.


Solution

  • 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;