2009-10-14 15 views

risposta

24

È possibile utilizzare le funzioni Canvas.TextWidth e Canvas.TextHeight.

Opzione 1, utilizzando la tela del controllo

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

opzione 2, la creazione di una tela temporaneo (utilizzando 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

Scommetto anche a me è di 10 secondi! –

5

se si dispone di un componente Delphi ha una "tela" proprietà, quindi è possibile utilizzare Component.Canvas.TextWidth. Per esempio: per ottenere la larghezza del testo di DBGrid è possibile utilizzare:

DBGrid1.Canvas.TextWidth('Stack'); 

Qui potete trovare riferimento completo su questo problema: Length of Delphi string in pixels