문제

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.

도움이 되었습니까?

해결책

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;

다른 팁

if you have a Delphi component has a "Canvas" property, then you can use Component.Canvas.TextWidth. For example: to get the width of the text of DBGrid you can use:

DBGrid1.Canvas.TextWidth('Stack'); 

Here you can find complete reference about this issue: Length of Delphi string in pixels

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top