Adapté la largeur d'un checkBox en fonction de son texte

Résolu
cs_magslide Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 28 septembre 2010 - 1 juil. 2010 à 00:44
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 1 juil. 2010 à 12:09
Bonjours tous le monde !

Je voudrais savoir si sous vb6 on peut adapté la largeur (width) d'un checkbox (le programme étant bien sur en cours d'exécution) en fonction d'un nouveau texte (Caption) que l'on envoi à se dernier au cour de l'exécution du programme.
Le problème est que si la largeur du checkbox est trop petite pour contenir le texte envoyé, ce dernier s'écrit sur plusieurs ligne (si possible suivant la hauteur définit du checkBox) et le texte se trouve tronqué pour les lettres en trop.

Comment connaitre la largeur que ce contrôle aura avec son nouveau texte pour pouvoir modifier exactement la largeur ?

Merci beaucoup de m'avoir lu !!
Merci aussi pour votre aide.

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 10:18
Salut
Et pourquoi ne donnes-tu pas une largeur plus importante à la CheckBox ?

En VB6 (pas en VBA), tu peux faire comme ça :
En général, on n'écrit jamais sur le fond d'une forme elle même. On va donc utiliser ces propriétés :
Dans les propriétés de ta forme, tu mets les même propriétés de Fonte que celles de ta CheckBox (Police, taille, gras, ...)
Quand tu veux connaître la longueur d'un texte, donc la largeur de ta CheckBox, il te suffit de le calculer avec :
maCheckBox.Width = maForme.TextWidth("mon texte à insérer") + 300
maCheckBox.Caption = "mon texte à insérer"
Le "+ 300", c'est à peu près la largeur de la case à cocher - à affiner si besoin

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_magslide Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 28 septembre 2010
1 juil. 2010 à 10:39
Merci beaucoup pour ta réponse !

En faite ce que je veux obtenir c'est un contrôle activex ressemblant à ça :
Ce contrôle contient un frame + 1 checkBox, cet exemple provient de Qt

Mon problème est que lorsqu'on choisit un titre plus ou moins long pour ce contrôle, la largeur de la checkBox doit pouvoir s'adapter sans pour autant effacer la bordure du haut comme sa :


et donc je pensé y arriver en adaptant le plus exactement possible la largeur de la checkBox. Je ne peux pas me permettre de donner une largeur plus importante comme tu me le propose...


Merci beaucoup pour ton aide
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 11:29
Et le code proposé résout-il ton problème ?
0
cs_magslide Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 28 septembre 2010
1 juil. 2010 à 11:39
oui parfaitement !!!
Merci beaucoup !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_magslide Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 28 septembre 2010
1 juil. 2010 à 11:42
Par contre c'est pour quoi le maForme juste avant TextWidth ?

Désolé je suis un peu tête en l'air et j'ais oublié de te le demander...
0
cs_magslide Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 28 septembre 2010
1 juil. 2010 à 11:52
C'est bon j'ais regardé la documentation pour mieux comprendre la methode TextWidth.
Désolé pour tous ces messages inutile.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 juil. 2010 à 12:09
Oui, maForme, c'est le nom de ta forme.
On peut aussi utiliser Me. quand on code à l'intérieur de cette forme
0
Rejoignez-nous