Textbox redimenssion [Résolu]

Signaler
Messages postés
21
Date d'inscription
lundi 19 août 2013
Statut
Membre
Dernière intervention
15 mars 2015
-
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonsoir,
Bon cette fois ci j'espère être dans la bonne rubrique pour déposer ma question et éviter les remontrances pas vraiment sympa a lire, mais surement utile pour éviter l'anarchie.
Voila je suis sous VB6, je cherche a redimensionner mon textbox en fonction de son contenu en long et en large , j ai bien essayé ceci:
text2.height= SendMessageLong(Text2.hwnd, EM_GETLINECOUNT, 0&, 0&)

mais sans succés !
merci de votre aide!
Mon Dieu faite que je sois dans la bonne rubrique ! sinon ça va chier ;)

4 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bonjour,
Tu es cette fois-ci bien dans la bonne sevtion (VB6 puisque tu développes sous VB6 ... LOL)
La ligne de code que tu montres n'est que la partie d'un code qui, utilisant la fonction SendMessage de l'Api de Windows, calcule le nombre de lignes du texte contenu dans la trextbox Text2. Et on voit que tu affectes à la propriété Height de cette textbox la valeur de ce nombre de lignes !
Le nombre de lignes n'est pas la hauteur graphique d'un texte, qui, lui, dépend de la police utilisée, de son style et de sa taille.
Intéresse-toi de très près aux méthodes TextWidth et TextHeight (à utiliser) exposées dans l'aide VB6.
Reviens avec ton code d'essai si encore en difficulté.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
J'ai quand-même voulu vérifier.
Pour ne pas me tromper, j'ai ouvert mon aide VB6 sur textwidth et textheight, que j'utilise très très très rarement et j'ai lu ===>>
Il a ensuite suffi de 3 minuscules et vraiment toutes bêtes lignes de codes (sans api du tout).
Je souhaite que tu passes par ces mêmes étapes et reviennes si vraiment encore en difficulté.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Je reste assez étonné lorsque la réactivité du demandeur est moindre que celle du/des répondant(s)....
Où en es-tu donc ?
PS : et finalement : 2 lignes de code et même pas 3, à l'aide de ce que je t'ait dit ...
On t'attend, ami...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Bon...
Le demandeur ne semble pas avoir envie de réagir ...
La voilà donc, sa solution (je l'expose ici pour le cas où d'autres que lui seraient intéressés, hein ...) :
code le plus facile (avec propriété BorderStyle de la textbox = 0)
Set Font = Text2.Font
 Text2.Move Text2.Left, Text2.Top, TextWidth(Text2.Text), TextHeight(Text2.Text)

Si l'on tient toutefois à avoiur des bordures (borderstyle = 1) , il va falloir utiliser un peu d'arithmétique, ainsi :
Set Font = Text2.Font
  Text2.Move Text2.Left, Text2.Top, TextWidth(Text2.Text) + ScaleX(8, vbPixels, Me.ScaleMode), TextHeight(Text2.Text) + ScaleY(8, vbPixels, Me.ScaleMode)

Attention à ce second cas ===>> observer la valeur 8 utilisée. Elle correspond à la configuration "habituelle" du PC d'exécution.
Si l'on veut être "universel", il faut calculer ce 8 (2 fois l'épaisseur d'une bordure retournée en pixels par la fonction GetSystemMetrics de l'Api de Windows.
Voilà voilà ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
220
Je voudrais quand-même appeler l'attention sur les gênes collatérales d'un tel redimensionnement. La textbox risque ainsi d'occuper une place bien plus grande sur le Form et de gêner d'autres lectures (labels, etc ...), voire de déborder carrément du Form (en fonction du texte qu'elle contient. Et on suppose que ce texte est variable, car sinon, on pourrait arrêter les dimensions de la textbox en mode création.)
C'est pour éviter de tels inconvénients qu'une textbox est dotée de scrollbars, dont l'utilisation, simple, n'est normalement pas une gêne pour l'utilisateur.