Ici, tu prends la ligne 10 par exemple, et tu lui demandes de placer cette ligne Après la ligne 9.
Donc tu lui demandes de remettre la ligne 10 au même endroit.
Sauf cas particulier, peut être fréquent. Si la ligne 9 et la ligne 10 sont rattachées à la même ligne parent, tu demandes en fait de ne rien changer.
Si elles ne sont pas rattachées au même parent, tu demandes un changement.
La doc dit bien , à propos du paramètre tdEnFrère :
La branche sera déplacée et sera le frère suivant de la branche destination. La branche déplacée sera donc sur le même niveau de hiérarchie que la branche destination mais à la position suivante.
Essaie ainsi : gIndice_arrivée=gIndice_départ-2.
Dans certains cas (souvent), ça marchera. Tu dois déjà pouvoir vérifier.
Mais si par exemple, la ligne en cours est la 2ème ligne d'un bloc, et si tu veux la remonter pour qu'elle soit le 1er enfant du groupe , tu ne peux plus passer par le paramètre tdEnFrère, mais il faut utiliser TdEnFils.
Et donc retrouver le n° de la ligne parent.
Cas général : les lignes manipulées ont des enfants. Et du coup, ce n'est ni gIndice_départ-1 ni gIndice_départ-2 mais un truc plus compliqué.
Si ta table contient
A1
A1B1
A1B1C1
A1B1C2
A1B2
A1B2D1
A1B2D2
A1B3
A1B3E1
A1B3E2
A1B3E3
Et si tu veux obtenir ça :
A1
A1B1
A1B1C1
A1B1C2
A1B3
A1B3E1
A1B3E2
A1B3E3
A1B2
A1B2D1
A1B2D2
Je pense qu'il y a 3 méthodes :
TableDéplaceBranche(TH_doc, 8, 2, tdEnFrère)
ou
TableDéplaceBranche(TH_doc, 5, 8, tdEnFrère)
ou
TableEchangeBranche(TH_doc, 5, 8 )
Regarde du coté de TableEchangeBranche.
Si tu veux obtenir la situation ci-dessous, TableEchangeBranche convient toujours, alors qu'avec TableDéplaceBranche, il faudra remplacer tdEnFrère par tdEnFils.
A1
A1B2
A1B2D1
A1B2D2
A1B1
A1B1C1
A1B1C2
A1B3
A1B3E1
A1B3E2
A1B3E3
Et il faut que tu passes par TableRécupèreParent et TableRécupèreFils pour trouver les numéros des lignes de destination.
Partager