Adapté la largeur d'un checkBox en fonction de son texte [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
28 septembre 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
28 septembre 2010

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Et le code proposé résout-il ton problème ?
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
28 septembre 2010

oui parfaitement !!!
Merci beaucoup !!!
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
28 septembre 2010

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...
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
28 septembre 2010

C'est bon j'ais regardé la documentation pour mieux comprendre la methode TextWidth.
Désolé pour tous ces messages inutile.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Oui, maForme, c'est le nom de ta forme.
On peut aussi utiliser Me. quand on code à l'intérieur de cette forme