Calculer la taille requise pour un TLabel
Ok, voici le problème. J'ai une étiquette de composant dans un panneau. L'étiquette est aligné comme alClient et a wordwrap activé. Le texte peut varier d'une ligne à plusieurs lignes. Je tiens à re-dimensionner la hauteur du panneau (et de l'étiquette) pour s'adapter à tous les le texte.
Comment puis-je obtenir la hauteur d'une étiquette quand je sais que le texte et la largeur du panneau?
source d'informationauteur Tom
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le TCanvas.TextRect méthode, avec le tfCalcRect et tfWordBreak drapeaux :
TCanvas.TextRect
encapsule un appel à laDrawTextEx
fonction de l'API Windows.La
tfCalcRect
ettfWordBreak
les drapeaux sont en delphi des wrappers pour les valeursDT_CALCRECT
etDT_WORDBREAK
de l'API windows. Vous pouvez trouver des informations détaillées au sujet de leurs effets dans leDrawTextEx
documentation sur msdnUtilisation TextWidth et TextHeight.
Voir un exemple ici:
http://www.greatis.com/delphicb/tips/lib/fonts-widthheight.html
TextWidth va vous dire comment le texte serait, et puis vous pouvez divisez-le par le contrôle de la largeur de voir comment le nombre de lignes dont vous avez besoin. Le reste de la division doit être une ligne supplémentaire.
Vous pouvez utiliser une ligne de code pour cette:
label.width := label.canvas.textwidth(label.caption);
ou vous pouvez définir l'étiquette de la propriété autosize à vrai dans l'inspecteur d'objet.
Si vous pouvez l'aligner alTop et de garder AutoSize sur puis TLabel sera automatiquement ajuster la hauteur après settign la légende.