DrawText
Exemple
DrawText(Canvas.Handle,PChar(vText), length(vText),vTextBox,DT_WORDBREAK or DT_INTERNAL or DT_CALCRECT);
Astuces
Dessiner un texte limité en largeur
Appeler deux fois DrawText.
Une fois avec le format DT_CALCRECT.
Une autre fais sans DT_CALCRECT.
// Le premier calcul la taille du texte le deuxieme le dessine TextBox := Rect(0, currentPos.Y, Width, High(Integer)); DrawText(ACanvas.Handle, PChar(Text), Length(Text), TextBox, DT_WORDBREAK or DT_INTERNAL or DT_CALCRECT); DrawText(ACanvas.Handle, PChar(Text), Length(Text), TextBox, DT_WORDBREAK or DT_INTERNAL);
Texte avec fond transparent
Canvas.Brush.Color := parent.Color; Canvas.Brush.Style := bsClear;//= transparent;
Formats
DT_BOTTOM
Justifie le texte au bas du rectangle. Cette valeur est utilisée uniquement avec la valeur DT_SINGLINE.
DT_CALCRECT
Détermine la largeur et la hauteur du rectangle.
S'il y a plusieurs lignes de texte, DrawText utilise la largeur du rectangle pointé par le paramètre lpRect et étend la base du rectangle pour délimiter la dernière ligne de texte.
Si le mot le plus grand est plus large que le rectangle, la largeur est étendue.
Si le texte est plus petit que la largeur du rectangle, la largeur est réduite.
S'il n'y a qu'une seule ligne de texte, DrawText modifie le côté droit du rectangle de manière à ce qu'il délimite le dernier caractère de la ligne.
Dans les deux cas, DrawText renvoie la hauteur du texte formaté mais ne dessine pas le texte.
DT_CENTER
Centrer le texte horizontalement dans le rectangle.
DT_EDITCONTROL
Duplique les caractéristiques d'affichage du texte d'un contrôle d'édition multiligne. Plus précisément, la largeur moyenne des caractères est calculée de la même manière que pour un contrôle d'édition, et la fonction n'affiche pas une dernière ligne partiellement visible.
DT_END_ELLIPSIS
Pour le texte affiché, si la fin d'une chaîne ne rentre pas dans le rectangle, elle est tronquée et des ellipses sont ajoutées. Si un mot qui n'est pas à la fin de la chaîne dépasse les limites du rectangle, il est tronqué sans ellipses. La chaîne n'est pas modifiée à moins que le drapeau DT_MODIFYSTRING ne soit spécifié.
Comparer avec DT_PATH_ELLIPSIS et DT_WORD_ELLIPSIS.
DT_EXPANDTABS
Développe les caractères de tabulation. Le nombre de caractères par défaut par onglet est de huit. Les valeurs DT_WORD_ELLIPSIS, DT_PATH_ELLIPSIS et DT_END_ELLIPSIS ne peuvent pas être utilisées avec la valeur DT_EXPANDTABS.
DT_EXTERNALLEADING
Inclut la police de caractères externe en tête de ligne. Normalement, l'entête externe n'est pas incluse dans la hauteur d'une ligne de texte.
DT_HIDEPREFIX
Ignore le caractère préfixe (&) de l'esperluette dans le texte. La lettre qui suit ne sera pas soulignée, mais les autres caractères mnémoniques du préfixe sont toujours traités. Exemple :
chaîne de saisie : “A&bc&&d”
normal : “Abc&d
DT_HIDEPREFIX : “Abc&d”
Comparer avec DT_NOPREFIX et DT_PREFIXONLY.
DT_INTERNAL
Utilise la police du système pour calculer les mesures du texte.
DT_LEFT
Aligne le texte à gauche.
DT_MODIFYSTRING
Modifie la chaîne de caractères spécifiée pour qu'elle corresponde au texte affiché.
Cette valeur n'a aucun effet à moins que DT_END_ELLIPSIS ou DT_PATH_ELLIPSIS ne soit spécifié.
DT_NOCLIP
Tirages au sort sans coupure. DrawText est un peu plus rapide lorsque DT_NOCLIP est utilisé.
DT_NOFULLWIDTHCHARBREAK
Empêche un saut de ligne au niveau d'une DBCS (chaîne de caractères à double largeur), de sorte que la règle de saut de ligne est équivalente aux chaînes SBCS. Par exemple, cela peut être utilisé dans les fenêtres coréennes, pour une meilleure lisibilité des étiquettes d'icônes. Cette valeur n'a aucun effet à moins que DT_WORDBREAK ne soit spécifié.
DT_NOPREFIX
Désactive le traitement des caractères de préfixe. Normalement, DrawText interprète le caractère de préfixe mnémonique & comme une directive pour souligner le caractère qui suit, et les caractères de préfixe mnémonique && comme une directive pour imprimer un seul &. En spécifiant DT_NOPREFIX, ce traitement est désactivé. Par exemple, Exemple :
chaîne de saisie : “A&bc&&d”
normal : “Abc&d
DT_NOPREFIX : “A&bc&&d”
Comparer avec DT_HIDEPREFIX et DT_PREFIXONLY.
DT_PATH_ELLIPSIS
Pour le texte affiché, remplace les caractères au milieu de la chaîne par des ellipses afin que le résultat s'inscrive dans le rectangle spécifié. Si la chaîne de caractères contient une barre oblique inversée (\), DT_PATH_ELLIPSIS préserve autant que possible le texte après la dernière barre oblique inversée. La chaîne n'est pas modifiée à moins que l'indicateur DT_MODIFYSTRING ne soit spécifié.
Comparez avec DT_END_ELLIPSIS et DT_WORD_ELLIPSIS.
DT_PREFIXONLY
Dessine seulement un trait de soulignement à la position du caractère suivant le caractère de préfixe de l'esperluette (&). Ne dessine aucun autre caractère dans la chaîne. Par exemple, Exemple :
chaîne de saisie : “A&bc&&d “n
normal : “Abc&d
DT_PREFIXONLY : ” _ ”
Comparer avec DT_HIDEPREFIX et DT_NOPREFIX.
DT_RIGHT
Aligne le texte sur la droite.
DT_RTLREADING
Mise en page dans l'ordre de lecture de droite à gauche pour un texte bidirectionnel lorsque la police sélectionnée dans le hdc est une police hébraïque ou arabe. L'ordre de lecture par défaut pour tout le texte est de gauche à droite.
DT_SINGLINE
Affiche le texte sur une seule ligne. Les retours de chariot et les sauts de ligne ne cassent pas la ligne.
DT_TABSTOP
Définit les arrêts de tabulation. Les bits 15-8 (octet d'ordre supérieur du mot d'ordre inférieur) du paramètre uFormat spécifient le nombre de caractères pour chaque tabulation. Le nombre de caractères par défaut pour chaque onglet est de huit. Les valeurs DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNAL, DT_NOCLIP, et DT_NOPREFIX ne peuvent pas être utilisées avec la valeur DT_TABSTOP.
DT_TOP
Justifie le texte en haut du rectangle.
DT_VCENTER
Le texte est centré verticalement. Cette valeur est utilisée uniquement avec la valeur DT_SINGLINE.
DT_WORDBREAK
Brise les mots.
Les lignes sont automatiquement coupées entre les mots si un mot dépasse le bord du rectangle spécifié par le paramètre lpRect.
Une séquence de retour de chariot à la ligne casse également la ligne.
Si cela n'est pas spécifié, la sortie se fait sur une ligne.
DT_WORD_ELLIPSIS
Tronque tout mot qui ne rentre pas dans le rectangle et ajoute des ellipses. Comparez avec DT_END_ELLIPSIS et DT_PATH_ELLIPSIS.