2009-10-14 25 views

Respuesta

24

Puede usar las funciones Canvas.TextWidth y Canvas.TextHeight.

la opción 1, el uso de la tela del control

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

Opción 2, creando 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; 
+0

mi apuesta demasiado por 10 segundos! –

5

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

DBGrid1.Canvas.TextWidth('Stack'); 

Aquí puede encontrar la referencia completa acerca de este tema: Length of Delphi string in pixels

Cuestiones relacionadas