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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top