Newsgroup: it.comp.lang.visual-basic
Titolo: Dannate TreeView come siete complicate per i principianti !!!

Ciao a tutti, sto realizzando con una TreeView un banale visualizzatore di 
unità e directory, ma è possibile che sia cosi complicato l'uso delle 
TreeView, bisogna aggiungere i nodi secondari per forza solo con il metodo 
Add ? ci sto impazzendo da un bel pezzo, eppure dovrebbe essere una cosa 
banale.
In pratica il problema che ho è questo quando entro in una directory potrei 
trovare delle sub directory e sub di sub, come mi devo comportare per 
aggiungere dei subnodi quando ci sono ? ed eventuali subsubnodi  ? che tipo 
di codice dovrei scrivere ?
Io credevo di avere risolto e invece sto affogando in un bicchier d'acqua 
aiuto !!!
Dim Counter As Integer
Dim SubCounter As Integer
Dim SubFolderNumber As Integer
Dim Folder As String
For Counter = 0 To 4
Dir1 = Drive1.List(Counter)
SubFolderNumber = Dir1.ListCount ' quante cartelle ci sono
TreeView1.Nodes.Add , , Drive1.List(Counter), Drive1.List(Counter)
For SubCounter = 0 To SubFolderNumber - 1
TreeView1.Nodes.Add Drive1.List(Counter), tvwChild, , Dir1.List(SubCounter)
Next
Next
In questo modo ottengo solo i primi 2 livelli, ma se sotto c'e ne fossero 
altri come dovrei ragionare con l'algoritmo ? non ci arrivo da solo, mi 
viene mal di testa, c'è qualche esempio in giro ?

 ha scritto nel messaggio 
news:GMs2f.21836$133....@tornado.fastwebnet.it...

Questo è un classic esempio di funzioni ricorsive, cioè un funzione che 
richiama se stessa.
Cmq senza friggerti la testa, in giro ci sono già degli esempi di API o ocx 
per sfogliare per cartelle.
Ciao

 banale.
Dovresti imparare prima il funzionamento del TreeView, ovvero che ogni 
gruppo di sottonodi deve avere come riferimento il nodo "padre".
Qui sotto un rapido esempio in forma ricorsiva di quello che ti serve:
-----------------------------------------------------------------------
Private Function NavigaCartelle(pathIniziale, nodi As Nodes, Optional 
nodoPadre As Node) As Nodes
     Dim nomeFile As String
     Dim nodoParente As Node
     nomeFile = Dir(pathIniziale & "\*.*", vbDirectory Or vbArchive)
     Do While nomeFile <> ""
         'directory
         If GetAttr(pathIniziale & "\" & nomeFile) = vbDirectory Then
             If (nomeFile <> "." And nomeFile <> "..") Then
                 Set nodoParente = nodi.Add(, nodoPadre, , nomeFile)
                 Call NavigaCartelle(pathIniziale & "\" & nomeFile, 
nodi, nodoParente)
             End If
         End If
         If GetAttr(pathIniziale & "\" & nomeFile) = vbArchive Then
             Call nodi.Add(, nodoPadre, , nomeFile)
         End If
         Debug.Print pathIniziale & "\" & nomeFile
         nomeFile = Dir
     Loop
End Function
Private Sub Form_Load()
     Dim nodiPrincipali As Nodes
     Set nodiPrincipali = NavigaCartelle("c:", TreeView1.Nodes, Nothing)
End Sub
--------------------------------------------------------------------------
Ti restituisce un errore alla riga
___ nomeFile=Dir ___
perchè nella forma ricorsiva la funzione dir presenta dei problemi. 
Sostituiscila con una chiamata API analoga e tutto dovrebbe funzionare.
-- 
Ciao,
	Fabrizio
===  
http://www.negusweb.it
  ===