Enregistrer/ouvrir le contenu d'un listview

Contenu du snippet

Voilà, ce gentil petit code servira a enregistrer un listview, Items, SubItems, Tag (Items). Il est relativement simple a comprendre.

Source / Exemple :


Public Function SaveListview(cListView As ListView, SubItemsNomb As Long, Fichier As String) As Boolean
On Error GoTo Erreur
Dim B As Long, C As Long
    Open Fichier For Output As #1 'On ouvre le fichier pour écrire
        For B = 1 To cListView.ListItems.Count 'Parcourir toute les items
            With cListView
                Print #1, Chr(4) & .ListItems(B).Text & Chr(12) & Chr(7) & Chr(3) & .ListItems(B).Tag & Chr(7) & Chr(3) & Chr(1); 'Écrire le contenu de l'item
                For C = 1 To SubItemsNomb 'Parcourir les SubItems
                    Print #1, Chr(2) & C & Chr(2) & .ListItems(B).SubItems(C) & Chr(17) & C & Chr(17); 'Enregistrer leurs contenu
                Next C
                Print #1, Chr(5) & Chr(2); 'Imprimer la fin du premier items
            End With
        Next B
    Close 1
    SaveListview = True
Exit Function
Erreur:
    SaveListview = False
End Function
Public Function OpenListView(cListView As ListView, SubItemsNomb As Long, Fichier As String) As Boolean
On Error GoTo Erreur
Dim B As Long, Pos As Long
Dim Texte As String, A As String
cListView.ListItems.Clear
Open Fichier For Binary Access Read As #1 'Ouvrir le fichier
    Texte = Space(LOF(1)) 'Mettre sa dans la variable
    Get 1, , Texte
Close #1
Pos = 1
    Do
        Pos = InStr(Pos, Texte, Chr(4)) + 1 'Détecter le premier items
        A = Mid(Texte, Pos, InStr(Pos, Texte, Chr(5) & Chr(2)) - Pos) 'Jusqu'ou sa arrête
        With cListView
            .ListItems.Add , , Left(A, InStr(A, Chr(12)) - 1) 'Ajouter l'item
            .ListItems(.ListItems.Count).Tag = Mid(A, InStr(A, Chr(7) & Chr(3)) + 2, InStr(A, Chr(7) & Chr(3) & Chr(1)) - 2 - InStr(A, Chr(7) & Chr(3)))
            For B = 1 To SubItemsNomb
                .ListItems(.ListItems.Count).SubItems(B) = Mid(A, InStr(A, Chr(2) & B & Chr(2)) + Len(Chr(2) & B & Chr(2)), InStr(A, Chr(17) & B & Chr(17)) - InStr(A, Chr(2) & B & Chr(2)) - Len(Chr(2) & B & Chr(2)))
            Next B
        End With
        If InStr(Pos, Texte, Chr(4)) = 0 Then Exit Do 'Sortir de la boucle quand c'est finit
    Loop
    OpenListView = True
Exit Function
Erreur:
    OpenListView = False
End Function

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.