Largeur en pixels de texte / légende dans Delphi 7
-
21-09-2019 - |
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.
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