Delphi 7中文本/标题的宽度(以像素为单位)

Tof*_*nov 11 delphi column-width font-size caption

这是我的问题,我想知道文本的实际长度(以像素为单位)(请注意,在某些字体中,各种字母的长度不同).我将使用它来更好地调整DBGrid中的列宽.

RRU*_*RUZ 27

您可以使用 Canvas.TextWidthCanvas.TextHeight功能.

选项1,使用控件的画布

WidthInPixels := Label1.Canvas.TextWidth('My Text');
Run Code Online (Sandbox Code Playgroud)

选项2,创建临时画布(使用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;
Run Code Online (Sandbox Code Playgroud)


Wae*_*oul 5

如果你有一个Delphi组件有一个"Canvas"属性,那么你可以使用Component.Canvas.TextWidth.例如:要获取DBGrid文本的宽度,您可以使用:

DBGrid1.Canvas.TextWidth('Stack'); 
Run Code Online (Sandbox Code Playgroud)

在这里您可以找到有关此问题的完整参考: Delphi字符串的长度(以像素为单位)