質問

これが私の問題です。テキストの実際の長さをピクセル単位で知りたいです(フォントによっては、さまざまな文字の長さが異なることに注意してください)。DBGrid での列幅の調整を改善するためにこれを使用します。

役に立ちましたか?

解決

使用できます Canvas.TextWidth そして Canvas.TextHeight 機能。

オプション 1、コントロールのキャンバスを使用する

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

オプション 2、一時キャンバスの作成 (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;

他のヒント

あなたはDelphiのコンポーネントは、「キャンバス」性質を持っている持っている場合は、

、あなたはComponent.Canvas.TextWidthを使用することができます。たとえば、次のように使用できるのDBGridのテキストの幅を取得するには:

DBGrid1.Canvas.TextWidth('Stack'); 

ここでは、この問題についての完全なリファレンスを見つけることができます。 画素の

でDelphiの文字列の
scroll top