Déplacement "Tout en bas" d'une branche dans un Treeview !

Résolu
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006 - 6 mars 2006 à 15:43
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006 - 7 mars 2006 à 14:26
Bonjour à tous !

Je vous présente rapidement mon problème...

J'ai un joli petit Treeview et je souhaiterais pouvoir gérer ses noeuds avec des boutons (PAS de Drag & drop).

Les fonctionnalités que je cherche à introduire sont:

- déplacer un noeud "Tout en haut" de sa branche => c'est fait !
- déplacer un noeud "Tout en bas" de sa branche" => Je cherche encore !
- déplacer un noeud d'un noeud vers le haut => Je cherche encore !
- déplacer un noeud d'un noeud vers le bas => Je cherche encore !

Donc voilà mon problème !

Pour celui auquel j'ai répondu j'ai utilisé la méthode de "réaffecter" au père le noeud en question (celà induit un repositionnement du noeud juste en dessous de son père). Et je voulais savoir si il existait des méthodes similaires, ou tout du moins "simple" pour arriver à répondre aux autres problèmes ??

Sinon je vois bien des solutions du type: Je crée un Noeud temp pour stocker le Noeud que je veux déplacer, puis je supprime ce noeud, je décale tout les noeuds "en dessous" d'un cran vers le haut, puis je colle mon Noeud temp... mais je trouve ça trés lourd pour un si simple déplacement...

SVP dites moi qu'il existe une méthode plus simple ;)

Merci de votre aide !!
Halala la prog, PES, l'infographie... heuresement que ma femme est moins jalouse que mon PC ;).

7 réponses

ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
7 mars 2006 à 14:26
Bon c'est bon j'ai trouvé... enfin j'ai bidouillé (copie > déplacement>fils change de père>suppression vieux père...) et ça marche c'est l'essentiel :)

La mise à jour de mon arbre est un peu longuette (notamment pour le déplacement des noeuds racines) mais le résultat obtenu est correct et c'est l'essentiel !

Merci de ta proposition d'aide Alain !
3
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
6 mars 2006 à 16:01
salut,



à mon avis il faut
enlever le Node de la collection du TreeView pour pouvoir ensuite
l'insérer à l'endroit voulu. tout ça dans une seule méthode avec une
énumération pour la position souhaitée.



Friend Enum NodeMoving

FirstPosition

PreviousPosition

NextPosition

LastPosition

End Enum



Dim nodToMove As TreeNode = Nothing ' à affecter

Dim pos As NodeMoving = NodeMoving.FirstPosition ' à déterminer

Dim index As Integer = nodToMove.Index



Select Case pos



Case NodeMoving.FirstPosition

index = 0



Case NodeMoving.LastPosition

index = CInt(nodToMove.Parent.Nodes.Count - 1)



Case NodeMoving.PreviousPosition

index -= 1



Case NodeMoving.NextPosition

index += 1



End Select



TreeView.Nodes.Remove(nodToMove)

TreeView.Nodes.Insert(index, nodToMove)






à tester...




[ Dalida ]<hr>
pensez à indiquer le langage utilisé et sa version !
0
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
6 mars 2006 à 16:08
Oki doki, je vais tester ça tout de suite !

Merci pour cette réponse précise et rapide :)

Je reviens ici vous dire si ça marche !

Halala la prog, PES, l'infographie... heuresement que ma femme est moins jalouse que mon ordinateur.
0
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
6 mars 2006 à 16:12
Oups... je crois que j'ai oublié de préciser que j'étais en VB pur et pas .NET.

Du coup le Insert et autre joyeuseté n'éxiste pas si je ne m'abuse... une idée ??

Merci !

Halala la prog, cs, l'infographie... heuresement que ma femme est moins jalouse que mon ordinateur.
0

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

Posez votre question
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
6 mars 2006 à 16:42
J'ai essayé ça:

Dim nParentNode As Node
Dim nNewSelectedNode As Node

Dim sKey As String
Dim sText As String

sKey = nSelectedNode.key
sText = nSelectedNode.text

Set nParentNode = nSelectedNode.FirstSibling

tvMyTreeview.Nodes.Remove (nSelectedNode.key)


Set nNewSelectedNode = tvMyTreeview.Nodes.Add(nParentNode, tvwLast, tvMyTreeview.Nodes(nSelectedNode), sText)


Mais du coup, seul le noeud est trasnféré en bas de la liste, il perd ses enfants au passage... il doit vraiment y avoir une astuce mais j'avoue qu'elle m'échappe...
Une idée ??

Halala la prog, PES, l'infographie... heuresement que ma femme est moins jalouse que mon ordinateur.
0
asecher Messages postés 262 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 27 avril 2007 1
6 mars 2006 à 23:37
Moi, tu sais, les histoires de noeuds, chacun les siens....
Mais je pense qu'il faut chercher à "swapper" le node vis-a-vis de son conteneur (le parent) et éviter de supprimer; Je n'ai pas VB sous la main mais dès que j'ai, je teste et te réponds; Mais je pense que tu aura trouvé entretemps.

A+

Alain 31
0
ZeMoskito Messages postés 13 Date d'inscription vendredi 30 mai 2003 Statut Membre Dernière intervention 3 avril 2006
7 mars 2006 à 09:40
Quand tu parles de swapper... c'est mettre de coté le Noeud sans le supprimer c'est ça ?? mais outre l efait que je ne sais pas comment faire ;) ) dans ce cas ne risque-je pas de perdre les fils du noeud ?? Ou alors il faut "swapper" toute la famille ?

Bref, je pense cerner ton idée mais j'ai encore quelques lacunes en VB (je rappelle que ce n'est PAS du .Net) donc ton aide sera la bienvenue quand tu auras le temps :)

Merci encore !

Halala la prog, cs, l'infographie... heuresement que ma femme est moins jalouse que mon ordinateur.
0
Rejoignez-nous