Largura em pixels de um texto/legenda em Delphi 7
-
21-09-2019 - |
Pergunta
Aqui está o meu problema, quero saber o comprimento real do texto em pixels (observe que várias letras têm comprimento diferente em algumas fontes). Vou usar isso para melhor ajuste da largura da coluna no DBGRID.
Solução
Você pode usar o Canvas.TextWidth
e Canvas.TextHeight
funções.
Opção 1, usando a tela do controle
WidthInPixels := Label1.Canvas.TextWidth('My Text');
Opção 2, criando uma tela temporária (usando um 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;
Outras dicas
Se você possui um componente Delphi possui uma propriedade "Canvas", pode usar o component.Canvas.TextWidth. Por exemplo: Para obter a largura do texto do DBGrid, você pode usar:
DBGrid1.Canvas.TextWidth('Stack');
Aqui você pode encontrar referência completa sobre este problema:Comprimento da corda Delphi em pixels
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow