Ширина текста / подписи в пикселях в Delphi 7
-
21-09-2019 - |
Вопрос
Вот моя проблема, я хочу знать фактическую длину текста в пикселях (обратите внимание, что в некоторых шрифтах разные буквы имеют разную длину).Я собираюсь использовать это для лучшей настройки ширины столбца в DBGrid.
Решение
Вы можете использовать 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;
Другие советы
если у вашего компонента Delphi есть свойство "Canvas", то вы можете использовать Component.Canvas.TextWidth.Например:чтобы получить ширину текста DBGrid, вы можете использовать:
DBGrid1.Canvas.TextWidth('Stack');
Здесь вы можете найти полную справку по этому вопросу:Длина строки Delphi в пикселях
Не связан с StackOverflow