cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007
-
31 mars 2006 à 18:17
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 2012
-
3 avril 2006 à 23:26
Dim strTextPrevious As String, strTextNext As String
Dim nodNodeItem As Node, nodPreviousNode As Node, nodMovedNode As Node
Set nodNodeItem = ctlTreeView.SelectedItem
If nodNodeItem Is Nothing Then
Exit Sub
End If
If nodNodeItem.Parent Is Nothing Then
Exit Sub
End If
If nodNodeItem.Previous Is Nothing Then
Exit Sub
Else
strTextPrevious = nodNodeItem.Previous.Key
Set nodPreviousNode = nodNodeItem.Previous
End If
strTextNext = ""
Set nodMovedNode = nodNodeItem
Do Until strTextNext = strTextPrevious
Set nodMovedNode.Parent = nodMovedNode.Parent
strTextNext = nodNodeItem.Next.Key
Set nodMovedNode = nodPreviousNode.Previous
Loop
End Sub
Tout est compréhensible pour moi sauf cette subtilité là: Set nodMovedNode.Parent = nodMovedNode.Parent
C'est à ce moment que le noeud qui était par exemple au rang 3 des fils
passe à 1. Je ne comprends qu'on affecte l'objet à lui même et que à
première vue cela change quelque chose.
Merci d'avance. C'est important pour moi car cela fait un sacré moment que j'essaye de comprendre
cs_M51
Messages postés63Date d'inscriptiondimanche 20 novembre 2005StatutMembreDernière intervention10 août 2007 31 mars 2006 à 18:37
;) moué pour la réponse, n'empêche que si tu exécutes le code le noeud
moved se déplace systématiquement au premier rang. Et là mystère
! Après ce noeud moved change pour en déplacer un autre. Si tu as plus
d'idée fait moi signe car j'aime bien comprendre
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 3 avril 2006 à 23:26
Salut M51, salut Renfield,
en fait l'astuce (si ce n'est pas l'exploitation d'un effet de bord), c'est que d'un noeud, il devient le premier enfantFirstSibling), et du coup, se replace tout de suite après le parent.
La boucle à l'air de servir à déplacer tous les noeuds précédents celui qui précède le noeud sélectionné (donc sauf lui) pour ré-affecter leur parent.
Au résultat, tous les précédents ont bougé, sauf le précédent du sélectionné.
Et on a donc l'impression que le sélectionné est remonté d'un enfant dans la filiation.
Bien sûr, ce curieux algo (qui doit certainement son existance au fait que FirstSibling, ou Next ou Privious sont en lecture seule) a ses limites : ne nous amusons pas à changer le tri !
Je vous jure qu'il n'est pas de moi :)
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>