Вот моя проблема, я хочу знать фактическую длину текста в пикселях (обратите внимание, что разные буквы имеют разную длину в некоторых шрифтах). Я собираюсь использовать это для лучшей регулировки ширины столбца в DBGrid.
Ширина в пикселях текста/заголовка в Delphi 7
Ответ 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 в пикселях