Larghezza in pixel di un testo / didascalia in Delphi 7
-
21-09-2019 - |
Domanda
Ecco il mio problema, io voglio sapere la lunghezza effettiva del testo in pixel (da notare che diverse lettere hanno lunghezza differente in alcuni tipi di carattere). Ho intenzione di utilizzare questo per una migliore regolazione della larghezza di colonna in DBGrid.
Soluzione
È possibile utilizzare il Canvas.TextWidth
e funzioni Canvas.TextHeight
.
L'opzione 1, utilizzando la tela del controllo
WidthInPixels := Label1.Canvas.TextWidth('My Text');
L'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;
Altri suggerimenti
se si dispone di un componente Delphi ha una proprietà "Canvas", 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: Lunghezza della stringa Delphi in pixel