Question

Voici mon problème, je veux savoir la longueur réelle du texte en pixels (notez que diverses lettres ont une longueur différente dans certaines polices). Je vais l'utiliser pour un meilleur réglage de la largeur de la colonne dans DBGrid.

Était-ce utile?

La solution

Vous pouvez utiliser le Canvas.TextWidth et Canvas.TextHeight fonctions .

Option 1, en utilisant la toile de la commande

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

Option 2, la création d'une toile temporaire (en utilisant 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;

Autres conseils

si vous avez un composant Delphi a une propriété « toile », vous pouvez utiliser Component.Canvas.TextWidth. Par exemple: pour obtenir la largeur du texte de DBGrid vous pouvez utiliser:

DBGrid1.Canvas.TextWidth('Stack'); 

Vous trouverez ici référence sur cette question: Longueur de la chaîne Delphi en pixels

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top