Ciao Milio,
aggiungo qualche altra riflessione, per quello che può valere.
Mi è difficile capire perché ad esempio giocherellando con i vari comandi e con undo e redo poi mi ritrovo alla fine con l'albero tutto incasinato e con l'errore
New parent cannot be a child in FCmdTree:110
Mi sa che l'usare i metodi di Gambas in base alla posizione corrente, impedisca ai metodi di poter tornare correttamente indietro.
Del resto nel mio ultimo progetto per poter tornare su mi devo spostare di una posizione in su rispetto alla posizione corrente e viceversa a scendere.
In definitiva occorrerebbe poter avere da gambas la posizione in base all'item nel frattempo variato e invece sembra che Gambas usi un'altra logica al suo interno.
Le mie sono mere supposizioni in quanto non conoscendo il C e il C++ non sono in grado di verificarle.
Vedi questa sequenza in Test-TreeView-UR0.0.1:
Item down 1 2
Da Down (key e item): 1 2
Item down 1 9
Da Down (key e item): 1 9
Item down 1 20
Da Down (key e item): 1 20
Item down 3 4
Da Down (key e item): 3 4
Item down 3 5
Da Down (key e item): 3 5
Item down 7 8
Da Down (key e item): 7 8
Item up 7 8
Item up 3 5
Item up 3 4
Item down 10 11
Da Down (key e item): 10 11
Item down 10 13
Da Down (key e item): 10 13
Item down 10 14
Da Down (key e item): 10 14
Item down 10 18
Da Down (key e item): 10 18
Item down 10 19
Da Down (key e item): 10 19
Item up 10 19
Item up 10 18
Item down 15 16
Da Down (key e item): 15 16
Item down 15 17
Da Down (key e item): 15 17
Item up 15 17
Item up 15 16
Item up 10 14
Item up 10 13
Item up 10 11
Item up 1 20
Item up 1 9
Item up 1 2
Item down 1 2
Item down 1 9
Item down 1 20
Item down 10 11
Item down 10 13
Item down 10 14
Item down 15 16
Item down 15 17
Item up 15 17
Item up 15 16
Item up 10 14
Item up 10 13
Item up 10 11
Item up 1 20
Item up 1 9
Item up 1 2
Item down 1 2
Item down 1 9
Item down 1 20
Item down 10 11
Item down 10 13
Item down 10 14
Item down 15 16
Item down 15 17
Item up 15 17
Item up 15 16
Item up 10 14
Item up 10 13
Item up 10 11
Item up 1 20
Item up 1 9
Item up 1 2
Qui è possibile constatarne la correttezza in quanto a ogni Down corrisponde un Up e viceversa, ma come è possibile farlo in Test-TreeViewM-UR-0.0.4 con solo la chiave?
Su Up e Down siamo certi che da errore di Out of bounds e pertanto è impossibile che funzioni correttamente anche il resto.
Il problema qui si manifesta sempre quando le azioni lineari vengono interrotte da dei redo che prima o poi portano allo stesso errore.