TreeView sous VB6

Signaler
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007
-
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007
-
Bonjour,

Je "m'amuse" avec les TreeViews depuis 2 semaines et j'ai réussi à en changer la couleur de fond, etc. Mais j'aimerais savoir si on peut changer le texte d'UNE SEULE Node (exemple: en gras, italique, etc.) et non de tout le TreeView. Y'a un API ou un truc quelconque pour ca?

Merci!

17 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
oui oui, on peut :
chaque node possèdes une propriété Bold, et une propriété Forecolor :

    TreeView1.Nodes.Add(Text:="Hello").Bold = True
    TreeView1.Nodes.Add(Text:="Hello").ForeColor = vbRed
    TreeView1.Nodes.Add(Text:="Hello").ForeColor = vbBlue
    TreeView1.Nodes.Add Text:="Hello"
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

Je regrette, mais les propriétés commencent à "Child" (pas de "Bold") et je ne trouve pas "ForeColor" non plus. C'est bien sous VB6 et non VB.Net?

Voici un exemple de ligne de code:

TreeView1.Nodes.Add(RootName$, tvwChild, ItemName$, ItemLabel$, PicList%).Bold = True

...ca me donne une erreur, et ".Forecolor" également.

Merci d'avoir répondu si rapidement!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
VB6..... mais ton Service Pack dois jouer..... j'ai le SP6...

met le a jour et tu verra .....
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

J'ai le SP6 d'installé.

La seule chose que je vois, c'est que je CROIS avoir installé la version 5 de TreeView plutôt que la 6 pour pouvoir changer la couleur de fond (BackColor) avec des API puisqu'on ne pouvait pas le faire avec la version 6 du contrôle.

Si tu connais une façon de changer tout ca facilement, ce serait très apprécié et ca règlerait mes problèmes.

Un gros merci pour l'aide!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
ok, tu utilises une version plus ancienne volontairement.....

ca compliques un peu la chose ;)

je sais pas trop comment y remédier.... dsl
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

Non mais en fait, si tu sais comment change la couleur de fond dans la version 6 (la plus récente) du contrôle, je pourrais changer la version que j'utilise... c'est que je tiens à ne PAS avoir un fond blanc dans mon TreeView. Si tout ca se fait, je change sur-le-champ! hehe!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Il n'y a pas non plus de propriété BackColor, mais un appel API (comme celui que tu as du utiliser ?) fonctionnera sans doute aussi.....
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

L'auteur du "truc" mentionnait que le code n'était pas compatible avec la version 6 de l'API. Il me faudra trouver une autre API pour la version 6 dans ce cas... sinon je suis foutu dans les deux cas. hehe!

Merci!
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
22
Alors la j'ai les boules !! Cela fait 1 mois que j'ai le SP6 et j'apprend seulement que le treeview permet enfin de changer l'apparence noeud par noeud !!! J'ia les méga boules !!
Hé !! Renfield, tu connaitrais pas les autres modif apporté par le SP6, car M$ n'est vraiment pas très bavard la dessus ?
Ou si tu as une URL sur le sujet ?

Christophe R.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
pas de doc la dessus.....

je connais qqs differences... comme la possibilité de mettre des Checkboxes devant les Nodes, les différentes propriétés de style (Forecolor, Bold, Grayed...).

en fait, en interne il doi y avoir eu pas mal de changements, car j'ai eu des soucis d'incompatibilités avec certaines API qui passaient sous SP5.....
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

J'ai fait un test et mis à jour mon contrôle. Tout fonctionne bien, je peux changer la couleur de fond du TreeView (version 6), mais les nodes demeurent blanches. Je dois changer leur couleur de fond une par une. Jusque là, c'est pas SI mal...

Le problème: je ne peux toujours pas utiliser l'attribut "Bold"!! Ca me donne un Type Mismatch sur "= True". Quand j'enlève "= True", j'ai un autre Type Mismatch sur ".Bold"... je n'y comprends plus rien. Je ne suis pas néophyte en VB, mais le Treeview, ca j'y connais rien et j'avoue qu'il est loin d'être convivial en fait de propriétés et trucs du genre...

J'avais trouvé un contrôle de tierce partie, mais je leur ai posé une question et je n'ai jamais eu de nouvelles. C'est pratique! hehe!
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

Bon, finalement j'ai trouvé. Voici ce qui n'allait pas (et je crois que le fait d'avoir opté pour la version 6 a aidé):

Je tentais d'utiliser l'attribut .Bold lors de l'ajout de la node, qui faisait partie d'une affectation du type "Set nodx = TreeView1.Nodes.Add(machin).Bold", mais ce n'est PAS la bonne façon de procéder.

Il faut faire comme suit (au cas où quelqu'un d'autre se poserait la question):

Set nodx = TreeView1.Nodes.Add(machin)
TreeView1.Nodes(TreeView1.Nodes.Count).BackColor = [LaCouleur]
TreeView1.Nodes(TreeView1.Nodes.Count).Bold = True/False

Donc l'opération doit être faite PAR LA SUITE et non en même temps que le reste.

Merci à tous de votre aide, particulièrement à Renfield! :big)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Effectivement , si tu fais cela :
Set nodx TreeView1.Nodes.Add(machin).Bold True

ca ne fonctionne pas !
tu tentes d'affecter un Boolean (le résultat du test d'égalité) a nodx...

par contre, tu peux faire cela :

Set nodx = TreeView1.Nodes.Add(machin)
nodx.BackColor = [LaCouleur]
nodx.Bold = True/False

en effet, Set nodx te donne via nodx la main sur le noeud.... pas besoin donc de : TreeView1.Nodes(TreeView1.Nodes.Count)
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

Super, ca va alléger mon code en plus. :big)

Et maintenant, une dernière question (c'est moins important que le texte lui-même):

Est-il possible de changer la couleur des lignes qui relient les noeuds aux parents ou à la racine? Car c'est un gris pâle et il n'est pas très visible à moins d'être sur un fond blanc ou très foncé. Toutes les teintes de couleurs assez pâles tendent à les faires disparaitre...

Merci encore!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
je crois qu'elle sont de la même couleur que le 'ForeColor' du Treeview.....
Messages postés
24
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
8 janvier 2007

Non, j'ai mis la propriété Forecolor à "vbBlack" (noir, évidemment) depuis la toute première fois que j'ai touché au TreeView et ca n'a jamais été noir. J'ai essayé rouge, vert, et autres couleurs et ca ne change rien.