Déplacer un noeud dans un TreeView

cs_M51 Messages postés 63 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 10 août 2007 - 28 mars 2006 à 16:14
cs_M51 Messages postés 63 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 10 août 2007 - 29 mars 2006 à 13:39
Je suis surpris qu'il n'y ait pas de méthode simple pour déplacer un noeud dans un Treeview (je ne cherche pas à avoir une explication sur le Drag and Drop, mais bien sur le fond, soit déplacer le noeud) une méthode type couper le noeud (avec ces fils) et le déplacer à une position spécifiée.
Après de nombreuses recherche, il s'emblerait que la meilleur méthode consiste à passer par un tableau pour sauvegarder les infos key du noeud et de ces fils (avec une fonction récursive pour l'optimisation) pour les recréer (avec la fonction Add) à l'endroit souhaité.
Pour info si cela intéresse quelqu'un voici un tuto très détaillé sur l'utilisation d'un treeview et de la fonction ADO. http://jacma.developpez.com/treeview/
Qu'en pensez vous ?

2 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
28 mars 2006 à 22:56
Salut,

Deux boutons (Command1 et Command2) + 1 treeview (tv)

Le code suivant te convient-il ?





Private Sub Command1_Click()

Dim Father As Node



With tv

.LineStyle = tvwRootLines

.Nodes.Clear

End With

Set Father = tv.Nodes.Add(, 4, "ROOT", "ROOT")

Set Father = tv.Nodes.Add("ROOT", 4, "PERE1", "PERE1")

Set Father = tv.Nodes.Add("ROOT", 4, "PERE2", "PERE2")

Set Father = tv.Nodes.Add("ROOT", 4, "PERE3", "PERE3")



For k = 1 To 10

Set Father = tv.Nodes.Add("PERE2", 4, "KEY" & CStr(k), "KEY" & CStr(k))

Next k



End Sub





Private Sub Command2_Click()

tv.Nodes.Remove ("KEY2")

Set Father = tv.Nodes.Add("ROOT", 4, "KEY2", "KEY2")

End Sub


Manu
0
cs_M51 Messages postés 63 Date d'inscription dimanche 20 novembre 2005 Statut Membre Dernière intervention 10 août 2007
29 mars 2006 à 13:39
Tout d'abord merci de m'avoir répondu.
Cependant je ne pense pas que ta réponde corresponde à ma demande (je n'ai peut être pas était assez clair)
Ton code si je ne m'abuse fait:
Bouton 1: crée des noeuds pour l'exemple,1 noeud principale ROOT avec 3 noeuds pères et sur le noeud père 2 tu ajoutes 10 fils au même niveau.
Bouton 2: tu supprimes le noeud avec la clef Key2, soit le fils n°2 du père 2.
Puis tu recrées un noeud sous le noeud principale ROOT qui porte la clef Key2.

Or ma demande est: déplacer 1 noeud (et ces fils, dans le terme fils on peut avoir plusieurs niveaux sous-fils)
pour le déplacer dans un autre noeud.
Ton programme détruit un noeud (sans sauver ses caractéristiques. Entre autre, comme le tag, et ses sous-fils éventuels...) et en recrée un plus loin.

Donc désolé mais ce n'est pas cela ma demande.
0
Rejoignez-nous