Textbox redimenssion

Résolu
marty14400 Messages postés 21 Date d'inscription lundi 19 août 2013 Statut Membre Dernière intervention 15 mars 2015 - 4 oct. 2013 à 00:22
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 4 oct. 2013 à 22:01
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/10/2013 à 07:03
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é.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 oct. 2013 à 07:41
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é.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 oct. 2013 à 13:24
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...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/10/2013 à 22:46
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/10/2013 à 22:02
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.
0
Rejoignez-nous