Newsgroup: it.comp.lang.visual-basic
Titolo: treeview check box aiuto

Salve, e' la prima volta che scrivo a questo newsgroup
Il mio problema e' realizzare un controller treeview con checkbox.
Il fatto e' che la treeview l'ho trovata ma vorrei effettura il gioco del
tipo:
- check box = true sul direttori principale, tutti i nodi appartenenti a
quella             sottodirectory devono essere su true.
- check box = false su una sottodirectory, allora devo controllare che
almeno una sottodirectory della directory principale sia su true altrimentti
mettere tutto il ramo a false.
per intenderci devo creare un programma per il back-up e vorrei creare un
qualcosa di simile a queelo che aveveva win 98 come backup...
Vi sarei grato per una risposta immediata e/o un consiglio...
Grazie e buone vacanze

 qualcosa di simile a queelo che aveveva win 98 come backup...
Sostanzialmente devi scorrere l'albero, ci sono una serie di metodi
apposta... piu' o meno dovrebbe essere cosi':
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim TempNode        As Node
Dim FlagChecked     As Boolean
If Node.Checked Then
    'tutti i nodi figli vengono spuntati
    Set TempNode = Node.Child
    Do While Not TempNode Is Nothing
        TempNode.Checked = True
        Set TempNode = TempNode.Next
    Loop
Else
    'se non esiste almeno un nodo alllo stesso livello
    'di quello corrente con Checked=True allora togliamo
    'il segno di spunta anche al parent
    Set TempNode = Node.FirstSibling 'il primo nodo parallelo
    Do While Not TempNode Is Nothing
        If TempNode.Checked Then
            FlagChecked = True
            Exit Do
        End If
        Set TempNode = TempNode.Next
    Loop
    If Not FlagChecked And Not Node.Parent Is Nothing Then
        Node.Parent.Checked = False
    End If
End If
End Sub
volendo puoi anche renderla ricorsiva.
Ciao
--
Luca Dormio
luca....@tin.it

Grazie... funziona anche se avavo bisogno che il tutto comprisse anche tutte
le cartelle le sottocartelle del secondo ramo del terzo:
  A-
  B----b1
  C-    b2----b21
          b3      b22
                    b23
e cosi' via...cerchero ti ottimizzare il codice per le mie esigenze.
P.s. cosa intendi per ricorsivo?
ciao
"Luca Dormio" <lucaFAV...@tinFAVA.it> ha scritto nel messaggio
news:9l0l7b$jcc$1...@fe2.cs.interbusiness.it...


 P.s. cosa intendi per ricorsivo?
Una funzione ricorsiva e' una funzione che richiama se stessa al suo
interno; da usare sempre con cautela ma utile, tra l'altro, per attraversare
strutture ad albero come ad esempio il file system.
Per l'appunto immaginavo volessi fare una cosa come quella qui sopra; non ho
controllato bene ma dovrebbe essere sufficiente modificare il codice cosi':
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
[...]
    Do While Not TempNode Is Nothing
        TempNode.Checked = True
        TreeView1_NodeCheck TempNode 'chiamata ricorsiva
        Set TempNode = TempNode.Next
    Loop
[...]
    If Not FlagChecked And Not Node.Parent Is Nothing Then
        Node.Parent.Checked = False
        TreeView1_NodeCheck Node.Parent 'chiamata ricorsiva
    End If
[...]
End Sub
fai un po' di prove e, mi raccomando, SALVA SPESSO...
