› Sviluppare funzionalita su Microsoft Office con VBA › Controllo Treeview si azzera cambiando pagina del Multipage
-
AutoreArticoli
-
Salve a tutti, sto riscontrando il seguente problema:
in un form ho un controllo Multipage e nella seconda pagina ho inserito un controllo Treeview. Funziona tutto correttamente quando lavoro con il Treeview, però se mi muovo ad esempio alla prima pagina e poi ritorno nuovamente nella seconda tutte le scelte che avevo precedentemente fatto sul controllo Treeview si sono azzerate.
Da cosa può dipendere? Grazie.
Saluti, Emanuele.
Ciao, allega un file di esempio e descrivi le operazioni che portano all'errore
Ciao, ho inserito un file di esempio appena fatto. Nel Multipage, alla pagina 2, c'è un treeview, mentre alla pagina 1 non c'è niente, tanto non è importante.
Adesso provare a fare delle selezioni dentro la treeview e dopodiché andare sulla pagina 1 e subito dopo ritornare alla pagina 2. A quel punto si vedrà che il treeview ha perso tutte le selezioni fatte prima. Vedere gli screenshot sottostanti.
Qui faccio le selezioni
Qui cambio pagina
Qui ritorno a pagina 2 e il controllo senza fare altro ha perso le selezioni
Emanuele.
Allegati:
You must be logged in to view attached files.Ottima descrizione, ma non credo si possa evitare in modo semplice, si potrebbe provare a salvare le selezioni in un array al cambio pagina e riprenderli al ritorno, ma ne vale la pena ?
Sto provando a salvare ogni volta che c'è l'evento treeview_nodecheck la situazione del treeview in quel momento in una variabile di appoggio definita come oggetto treeview, però non riesco ancora a "copiare" le impostazioni e poi di nuovo a "incollarle". Purtroppo se uso il comando SET mi lega i due treeview e quando cambia l'originale cambia anche quello di appoggio
Potresti usare la proprietà Tag del nodo (come appoggio) per memorizzare lo stato:
`Private Sub MultiPage1_Change() If MultiPage1.SelectedItem.Index = 1 Then Dim nodo As Node For Each nodo In TreeView1.Nodes If nodo.Tag = 1 Then nodo.Checked = True End If Next End If End Sub Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node) Node.Tag = Abs(Node.Checked) End Sub`
Chiaramente se le impostazioni devono essere persistenti dovrai scriverle 'da qualche parte'.
-
AutoreArticoli