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.

Foi útil?

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
scroll top