Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top