Ecco il mio problema, desidero conoscere la lunghezza effettiva del testo in pixel (notare che varie lettere hanno una lunghezza diversa in alcuni tipi di carattere). Lo userò per una migliore regolazione della larghezza della colonna in DBGrid.Larghezza in pixel di un testo/didascalia in Delphi 7
11
A
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;
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
Scommetto anche a me è di 10 secondi! –