Ancho en pixeles de un texto / subtítulo en Delphi 7
-
21-09-2019 - |
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.
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