Inserire 3° livello in Tree_View

di
Anonimizzato9340
il
2 risposte

Inserire 3° livello in Tree_View

Buonasera a tutti, vorrei un aiutino con il comando Tree_View . Sono riuscito a fare un piccolo schema a 2 livelli, ma non riesco a capire come fare a fare un 3° livello e oltre.
vi metto di seguito un esempio.

Classe A
|_> Livello 1A
|_> Livello 2A
|_> Livello 3A
Classe B
|_> Livello 1B
|_> Livello 2B
Classe C

Ora vorrei inserire un sottolivello al Livello 1A e Livello 2B, chiamatti Sottolivello 11A e Sottolivello 22B.

Questo di seguito e' il codice VB con cui ho fatto lo schema sopra

Option Compare Database

Private Sub Form_Load()
Dim tmpnode As MSComctlLib.Node
Dim tmpnode1 As MSComctlLib.Node

Set tmpnode = Me.TreeView0.Nodes.Add(, , "ClA", "Classe A")
tmpnode.Expanded = True
Set tmpnode = Me.TreeView0.Nodes.Add(, , "ClB", "Classe B")
tmpnode.Expanded = True
Set tmpnode = Me.TreeView0.Nodes.Add(, , "ClC", "Classe C")
tmpnode.Expanded = True

Set tmpnode = Me.TreeView0.Nodes.Add("ClA", 4, "ClAliv1A", "Livello 1A")
tmpnode.Expanded = True
Set tmpnode = Me.TreeView0.Nodes.Add("ClA", 4, "ClAliv2A", "Livello 2A")
tmpnode.Expanded = True
Set tmpnode = Me.TreeView0.Nodes.Add("ClA", 4, "ClAliv3A", "Livello 3A")
tmpnode.Expanded = True

Set tmpnode = Me.TreeView0.Nodes.Add("ClB", 4, "ClBliv1A", "Livello 1B")
tmpnode.Expanded = True
Set tmpnode = Me.TreeView0.Nodes.Add("ClB", 4, "ClBliv2A", "Livello 2B")
tmpnode.Expanded = True


End Sub

grazie mille

ciao a tutti

2 Risposte

  • Re: Inserire 3° livello in Tree_View

    Premetto che non uso Activex da 15 anni, sono PERICOLOSI con VBA in quanto non Espongono correttamente tutti gli EVENTI ed i DataTipe specifici...!
    Semplifichiamo...
    Come hai fatto ad aggiungere il 2° livello...?
    
    Set tmpnode = Me.TreeView0.Nodes.Add(, , "ClA", "Classe A")
    tmpnode.Expanded = True
    Set tmpnode = Me.TreeView0.Nodes.Add("ClA", 4, "ClAliv1A", "Livello 1A")
    tmpnode.Expanded = True
    La sintassi deriva da
    
    TreeView1.Nodes.Add Relative, Relationship, Key, Text, Image, SelectedImage
    
    In questo caso la logica diventa questa
    
    Private Sub Form_Load()
        Dim objRoot As Node
        With TreeView1
          .Nodes.Clear
          Call .Nodes.Add(, , "root", "Top of List")
          Call .Nodes.Add("root", tvwChild, "A", "Item One")
          Call .Nodes.Add("A", tvwChild, "AA", "Item A1")
          Call .Nodes.Add("AA", tvwChild, "AA1", "Item AA1")
          Call .Nodes.Add("AA", tvwChild, "AA2", "Item AA2")
          Call .Nodes.Add("AA", tvwChild, "AA3", "Item AA3")
          Call .Nodes.Add("A", tvwChild, "AB", "Item B1")
          Call .Nodes.Add("AB", tvwChild, "AB1", "Item AB1")
          Call .Nodes.Add("A", tvwChild, "AC", "Item C1")
          Call .Nodes.Add("AC", tvwChild, "AC1", "Item AC1")
          Call .Nodes.Add("root", tvwChild, "B", "Item Two")
          Call .Nodes.Add("B", tvwChild, "BA", "Item A2")
          Call .Nodes.Add("B", tvwChild, "BB", "Item B2")
          Call .Nodes.Add("B", tvwChild, "BC", "Item C2")
        End With
        Set objRoot = TreeView1.Nodes("root")
    End Sub
    
    Nel tuo caso specifico il 2° livello che hai aggiunto diventa figlio del ROOT..., usando il Paramtro "ClA"...
    Ora il 3° Livello deve essere il figlio del 2° quindi potrebbe essere che il parametro da aggregare
    sia "ClAliv1A"...?
    Poi ovviamente l'indentazione... 2*Level diventa più Flessibile...!

    A questo proposito perchè non ti crei una Funzione che accetta come parametri il PADRE, il LIVELLO ed i Parametri del NODO in modo che pensa lei ad aggiungere un CHILD...?
    Questo potrebbe venirti utile in un'ottica di chiamata RICORSIVA che con i TREEVIEW è estremamente naturale implementare per non dover scrivere centinaia di righe di codice...!
  • Re: Inserire 3° livello in Tree_View

    Prima di tutto grazie mille per la tua risposta e' proprio quello che volevo sapere.
    mentre cercavo qualcosa su internet a rigurado ho trovato spunti, ho pensato di creare una tabella SchedaProdotto, con tutti i dati inerenti, e una seconda tabella PadreFiglio con tutti i legami tra i prodotti. creare delle query per cercare i prdotti e relativi figli e da questo compilare il TreeView.
    cosa ne pensi?
Devi accedere o registrarti per scrivere nel forum
2 risposte