Pregunta

Aquí está mi problema, quiero saber la longitud real del texto en píxeles (tenga en cuenta que varias letras tienen longitud diferente en algunas fuentes). Voy a utilizar esto para un mejor ajuste del ancho de columna de DBGrid.

¿Fue útil?

Solución

Puede utilizar el Canvas.TextWidth y funciones Canvas.TextHeight.

Opción 1, utilizando la lona del control

WidthInPixels := Label1.Canvas.TextWidth('My Text');

Opción 2, la creación de un lienzo temporal (usando un 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;

Otros consejos

Si usted tiene un componente Delphi tiene una propiedad "lienzo", entonces se puede utilizar Component.Canvas.TextWidth. Por ejemplo: para obtener el ancho del texto de DBGrid puede usar:

DBGrid1.Canvas.TextWidth('Stack'); 

Aquí puede encontrar la referencia completa acerca de este tema: Longitud de la cadena de Delphi en píxeles

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top