Copie de treeview avec sauvegarde dans un fichier texte

Contenu du snippet

Ce code permet de copier deux treeviews, sur une même fenètre ou sur deux fenètres différentes. De plus, une sauvegarde dans un fichier texte est effectuée.
La fonction d'ouverture de la sauvegarde est un peu barbare et spécifique à un de mes programme, à vous de l'adapté au votre!!!!!

Source / Exemple :


Public Function Copier(Menu_P As TreeView, MenuTree_P As TreeView) As TreeView  'Fonction de copiage de TreeView pour le passage de "gestion de groupes de variable" à la page principale

Dim i%
Dim Node_L As Node  'declaration des variables

Open "tree.txt" For Output As "1"   'on ouvre le fichier de sauvegarde
VBTrend.txtchemin = chemin

    For i = 1 To MenuTree_P.Nodes.Count     'Boucle de copiage des différents éléments du treeview

    If (i = 1) Then 'Pour la racine
       Set Node_L = Menu_P.Nodes.Add(, , MenuTree_P.Nodes(i).Key, MenuTree_P.Nodes(i).Text, MenuTree_P.Nodes(i).Image, MenuTree_P.Nodes(i).SelectedImage)

       Set Node_L = MenuTree_P.Nodes(i)
          
                   
       Write #1, MenuTree_P.Nodes(i).Key & ";" & MenuTree_P.Nodes(i).Text & ";" & MenuTree_P.Nodes(i).Image & ";" & MenuTree_P.Nodes(i).SelectedImage 'On écrit au fur et à mesure dans le fichier texte
        
    Else
    'Pour le reste de l'arbre
      Chaine = groupe.TreeView1.Nodes(i).Parent.Key 'On recupere la cle du noeud précédent
        
      Set Node_L = Menu_P.Nodes.Add(Chaine, tvwChild, MenuTree_P.Nodes(i).Key, MenuTree_P.Nodes(i).Text, MenuTree_P.Nodes(i).Image, MenuTree_P.Nodes(i).SelectedImage)

       Set Node_L = MenuTree_P.Nodes(i)
       
        Write #1, MenuTree_P.Nodes(i).Key & ";" & MenuTree_P.Nodes(i).Text & ";" & MenuTree_P.Nodes(i).Image & ";" & MenuTree_P.Nodes(i).SelectedImage  'ecriture dans le fichier
    
   End If
    Next i
Close 1

End Function

Public Function ouvrir(file)    'fonction d'ouverture de fichier

Dim Node_L As Node
Dim j As Integer
Dim arbre As String
Dim Posi As Integer     'declaration des variables
Dim Posi1 As Integer
Dim Posi2 As Integer
Dim Mot As String
Dim Mot1 As String
Dim Mot2 As String
Dim ligne1 As String
Dim Chaine As String
Dim bool As Boolean

Open file For Input As "1"  'ouverture du fichier en question

VBTrend.TreeView1.Nodes.Clear   'on efface l'ancien treeview
 
For i = 1 To NbLignes   'boucle jusq'à la fin du fichier
       
            Line Input #1, arbre    'recuperation des infos ligne par lignes
            Posi = InStr(arbre, Chr(59))
        If Posi = 0 Then
            Mot = arbre
       
        Else
            Mot = Left(arbre, Posi - 1)
            Mot = Mid(Mot, 2)
            ligne = Mid(arbre, Posi + 1)
            Posi1 = InStr(ligne, Chr(59))
            Mot1 = Left(ligne, Posi1 - 1)
            Mot2 = Mid(ligne, Posi1 + 1)    'recuperation des différents éléments du fichier
            Mot2 = Left(Mot2, 2)
            Posi2 = InStr(Mot2, Chr(59))
            Mot2 = Left(Mot2, Posi2 - 1)
            Mot2 = Right(Mot2, 1)
            
            'Création de l'arbre
            
            If (i = 1 And Mot1 = "Serveurs") Then
                                 
                Set Node_L = VBTrend.TreeView1.Nodes.Add(, , Mot, Mot1, 2)

                Set Node_L = VBTrend.TreeView1.Nodes(i)
                         
            Else
              
             If (i = 4 Or i = 5 Or i = 6) Then
                Chaine = VBTrend.TreeView1.Nodes(3).Key
                Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 4)

                    Set Node_L = VBTrend.TreeView1.Nodes(i)
            End If
            If (i = 8 Or i = 9 Or i = 10) Then
                Chaine = VBTrend.TreeView1.Nodes(7).Key
                Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 4)

                    Set Node_L = VBTrend.TreeView1.Nodes(i)
            End If
                              
                If (i = 7) Then
                    Chaine = VBTrend.TreeView1.Nodes(2).Key
                    Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 3)

                    Set Node_L = VBTrend.TreeView1.Nodes(i)
                
                ElseIf (i = 3) Then
              
                    Chaine = VBTrend.TreeView1.Nodes(i - 1).Key
                    Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 3)

                    Set Node_L = VBTrend.TreeView1.Nodes(i)
                    
              
                ElseIf (i = 2) Then
                    
                    Chaine = VBTrend.TreeView1.Nodes(i - 1).Key
                    Set Node_L = VBTrend.TreeView1.Nodes.Add(Chaine, tvwChild, Mot, Mot1, 1)

                    Set Node_L = VBTrend.TreeView1.Nodes(i)
    
               End If
              End If
            End If
        
        

    Next i
    
Dim nodNode As Node, intNode, intNode1 As Integer
For intNode = 1 To VBTrend.TreeView1.Nodes.Count
    VBTrend.TreeView1.Nodes(intNode).Expanded = True        'on ouvre toutes les branches de l'arbre
Next intNode

Close 1
End Function

Conclusion :


Pour l'appel de la fonction de copie : Copier(destination, source)
Pour l'ouverture de la sauvegarde : Call ouvrir(nom du fichier fichier)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (acidburn23)