Newsgroup: it.comp.lang.visual-basic
Titolo: [help] treeview (diventerò pazzo?)

devo inserire in un progetto un controllo treeview
però ho la necessità di caricare tutte le informazioni da un file di testo
siccome la profondità dei nodi è variabile non so come fare a scrivere del
codice per fare questo
nel file di testo le cose saranno irganizzate così:
 nodoroot
 nodoroot.nodo1
 nodoroot.nodo1.sottonodo
 nodoroot.nodo1.item
 nodoroot.nodo1.item2
o magari più semplicemente così:
 nodoroot
 .nodo1
 ..sottonodo
 .item
 .item2
per favore aiutatemi!
grazie
:[Federiko]:

 .item2
Ti sei risposto da solo!
Magari con un  piccolo ritocco:
nodoroot
.nodo1
..sottonodo1.1
,item1.1
,item2.1
.nodo2
..sottonodo2.1
,item2.1
,item2.2
Poi conti i ".".
Se ne hai uno e` un nodo appena sotto la radice,
se ne hai 2 e` appena piu` sotto, ...
Quando comincia per "," allora e` una foglia (o item)
dell'ultimo nodo che hai inserito.
Ciao e fammi sapere, che interessa anche a me.
Berna.


Non ha importanza da dove provengono le informazioni da inserire nel
treeview, 
p.es
.
Set NodeX = TreeView1.Nodes.Add(, , "ROOT", "Root")
Set NodeX = TreeView1.Nodes.Add("ROOT", , "NODO1", "Nodo1")
Set NodeX = TreeView1.Nodes.Add("NODO1", tvwChild, "VOCE1NODO1", "Voce 1")
Set NodeX = TreeView1.Nodes.Add("NODO1",tvwChild, "VOCE2NODO1", "Voce 2")
Set NodeX = TreeView1.Nodes.Add("NODO1",tvwChild, "SOTTONODO1",
"SottoNodo1")
Set NodeX = TreeView1.Nodes.Add("SOTTONODO1",tvwChild, "VOCE1SOTTONODO1",
"Voce 1")
Set NodeX = TreeView1.Nodes.Add("SOTTONODO1",tvwChild, "VOCE2SOTTONODO1",
"Voce 2")
Set NodeX = TreeView1.Nodes.Add("ROOT", , "NODO2, "Nodo2)
Set NodeX = TreeView1.Nodes.Add("NODO2", tvwChild, "VOCE1NODO2", "Voce 1")
Set NodeX = TreeView1.Nodes.Add("NODO2", tvwChild, "VOCE2NODO2", "Voce 2")
...la sintassi non è sicuramente elegante, ma mostra come fare riferimento
alla radice o ai nodi dell'albero per inserire le voci.
Ciao, Adriano

  .item2
Oppure:
"Radice"
1,"Nodo1"
2,"Nodo1.1"
2,"Nodo1.2"
1,"Nodo2"
5,"Nodo2.1"
5,"Nodo2.2"
5,"Nodo2.3"
che puoi gestire cosi`:
Option Explicit
Private Const mc_strFILE$ = "NODES.DAT"
Private Function GetPathName$( _
  ByVal Path$ _
, ByVal FileName$ _
)
  If Right$(Path, 1) <> "\" Then Let GetPathName = "\"
  Let GetPathName = Path & GetPathName & FileName
End Function
Private Sub LoadNodes( _
  ByVal TreeView As MSComctlLib.TreeView _
, ByVal PathName$ _
)
  Dim intFile%, lngRelative&, strText$
  Let intFile = FreeFile(0)
  Open PathName For Input As #intFile
  With TreeView.Nodes
    Input #intFile, strText
    Call .Add(Text:=strText)
    While Not (EOF(intFile))
      Input #intFile, lngRelative, strText
      Call .Add( _
          Relative:=.Item(Index:=lngRelative) _
        , Relationship:=tvwChild _
        , Text:=strText)
    Wend
  End With
  Close #intFile
End Sub
Private Sub SaveNodes( _
  ByVal TreeView As MSComctlLib.TreeView _
, ByVal PathName$ _
)
  Dim intFile%, Index&
  Let intFile = FreeFile(0)
  Open PathName For Output As #intFile
  With TreeView.Nodes
    Write #intFile, .Item(Index:=1).Text
    For Index = 2 To .Count
      With .Item(Index:=Index)
        Write #intFile, .Parent.Index, .Text
      End With
    Next
  End With
  Close #intFile
End Sub
Private Sub Form_Load( _
)
  Call LoadNodes( _
      TreeView:=TreeView1 _
    , PathName _
      :=GetPathName(Path:=App.Path, FileName:=mc_strFILE))
End Sub
Private Sub Form_Unload( _
  ByRef Cancel As Integer _
)
  Call SaveNodes( _
      TreeView:=TreeView1 _
    , PathName _
      :=GetPathName(Path:=App.Path, FileName:=mc_strFILE))
End Sub
--
Ciao.
Maurizio

 wrote in message
8j52a1$re2$1...@lacerta.tiscalinet.it...


 .item2
Ma, scusa... la sintassi è
Call TreeView1.Nodes.Add(NodoParent, tvwChild, Chiave, Testo)
Basta che ti fai un loop su tutti i nodi e ti salvi le quattro informazioni
per ogni nodo, poi te le ricarichi paro-paro.
Funzionerà?
Prova...
Ciao

 Giuseppe
Grazie!!!!!!!!