Ширина в пикселях текста/заголовка в Delphi 7

Вот моя проблема, я хочу знать фактическую длину текста в пикселях (обратите внимание, что разные буквы имеют разную длину в некоторых шрифтах). Я собираюсь использовать это для лучшей регулировки ширины столбца в DBGrid.

Ответ 1

Вы можете использовать Canvas.TextWidth и Canvas.TextHeight.

Вариант 1, используя холст элемента управления

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

Вариант 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;

Ответ 2

если у компонента Delphi есть свойство Canvas, вы можете использовать Component.Canvas.TextWidth. Например: чтобы получить ширину текста DBGrid, вы можете использовать:

DBGrid1.Canvas.TextWidth('Stack'); 

Здесь вы можете найти полную ссылку на эту проблему: Длина строки Delphi в пикселях