Treeview et fonction recursive pour explorateur FTP

Signaler
Messages postés
17
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
30 janvier 2013
-
Messages postés
17
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
30 janvier 2013
-
Bonjour les gens,

J'expose mon problème :
Je cherche à reproduire un explorer ftp à l'aide d'un treeview, j'utilise une fonction recursive nommée "lister_noeud" que j'appel lorsqu'un noeud est detecté.
Cette fonction à l'air de fonctionner, le seul hic est que le prog ne m'affiche que les derniers enfants de chaque parents

Voila ce que j'aimerais :
Parent 1

---enfant 1.1
---enfant 1.2

Parent 2

---enfant  2.1
---enfant 2.2              
                etc ...

Mais pour l'instant je n'ait que cela :

Parent 1

--enfant 1.2

Parent 2

--enfant 2.2
                 etc...et cela pour chaque sous-rep, parfois j'ai même plusieurs fois le même enfant, sinon pas de problème pour les parents.

je ne m'en sors pas, HELP

4 réponses

Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Salut,

Pourrais tu mettre ton code pour que l'on puisse voir?

slb.

---------------------------------------------------------------
Il faut beaucoup donner pour recevoir un tout petit peu...
---------------------------------------------------------------
Messages postés
17
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
30 janvier 2013

Pas de problème, voila le code, developpé avec VS 2008 :
Il doit paraitre bordelique pour vous, mais je suis encors debutant, veuillez m'excuser

Function Lister_Noeud(ByVal NomRep As String, ByRef Noeud As Windows.Forms.TreeNode, ByVal Wi As Int32) As Boolean                                                         'Voila la fonction recursive

        Dim listbox As New Windows.Forms.ListBox

        ftpcd(NomRep, axinet1)                                      'ces fonctions viennent d'une autre feuille et me servent
        ftpdir(listbox, axinet1)                                          'a lister le contenu du ftp
        Dim wrep As String
        Dim wnoeud As New Windows.Forms.TreeNode

        Wi = 0
        For Wi = 0 To listbox.Items.Count - 1                           'pour wi de 0 au nombre d'elements de la listbox            wrep listbox.GetItemText(listbox.Items(Wi))               'wrep elements de la listbox
            wnoeud.ImageIndex = 0
            wnoeud.SelectedImageIndex = 0            wnoeud.Text wrep                                          'texte du noeud contenu de wrep
          
            If InStr(wrep, "/") > 0 Then                                'si wrep comporte au moins un "/"
                Lister_Noeud(wrep, wnoeud, Wi)                        
            Else
                ftpcd("..", axinet1)                                     'sinon, on remonte d'un niveau
            End If
            Noeud.Nodes.Add(wnoeud)
        Next
    End Function

    Private Sub Menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load                                                                                      

        Dim i As New Integer
        Dim Nom_Rep As String
        Dim lstb As New System.Windows.Forms.ListBox                    'listbox virtuelle

        If ftpopen("
192.168.1.1
", "user", "pass", axinet1) = True Then 'ouverture connection ftp
            ftpdir(lstb, axinet1)                                                                                    'dir dans la lstb
            axinet1.Cancel()
            i = 0
            For i = 0 To lstb.Items.Count - 1                         
                ftpopen("192.168.1.1", "user", "pass", axinet1)    'connection ftp
                Nom_Rep = lstb.GetItemText(lstb.Items(i))              
                Dim noeud As New Windows.Forms.TreeNode
                noeud.ImageIndex = 0
                noeud.SelectedImageIndex = 0
                noeud.Text = Nom_Rep                                  
                If InStr(Nom_Rep, "/") > 0 Then                         'si dans nom_rep il y a un "/" alors
                    Lister_Noeud(Nom_Rep, noeud, i)                    
                End If
                TreeV_MAJ.Nodes.Add(noeud)                              'ajout du noeud
                axinet1.Cancel()
            Next
        Else
            MsgBox("non connecté au ftp")                              
        End If
    End Sub
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
ca risque d'être long...

liste les dossiers, leurs enfants, a la limite, mais pas recursif jusqu'au bout.
développe au fur et a mesure, quand l'user developpe telle ou telle branche.
Messages postés
17
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
30 janvier 2013

Merci pour votre réponse rapide,
Vous n'auriez pas un bout de code à me proposer parce que j'ai beau chercher sur le site je ne trouve rien, ou alors des explorateur style windows, ce qui ne m'interesse pas.
Je bloque vraiment la, je dois manquer de connaissances

Merci d'avance