Exploreur simple et rapide (f.s.o.)

Soyez le premier à donner votre avis sur cette source.

Vue 5 774 fois - Téléchargée 654 fois

Description

Je sais, source très classique, mais j'en ai pas vu de simple, juste avec des objets FSO qui sont la pour ça.
N'utilise donc pas findClose...les types W...

Donc code - long = + facile à comprendre !

Source / Exemple :


Option Explicit

Dim fso As FileSystemObject

Private Sub Form_Load()
Set fso = New FileSystemObject
Call tree.Nodes.Add(, , "C:\", "C:\", "chef")
tree.Nodes.Add "C:\", tvwChild
End Sub

Private Sub init(initChemin As String)
Dim fichier As String
Dim rep As Folder

For Each rep In fso.GetFolder(initChemin).SubFolders 'on boucle tout le dossier contenu dans initChemin
    Call tree.Nodes.Add(initChemin, tvwChild, initChemin & rep.Name & "\", rep.Name, "rep") 'on ajoute les dossier
    If fso.GetFolder(initChemin & rep.Name).SubFolders.Count + fso.GetFolder(initChemin & rep.Name).Files.Count > 0 Then
       tree.Nodes.Add initChemin & rep.Name & "\", tvwChild 'node factice si il y a un dossier ou un fichier
    End If
    DoEvents
Next
End Sub

Private Sub tree_Expand(ByVal Node As MSComctlLib.Node)
Dim i As Integer
For i = 0 To Node.Children - 1 'on vire le node fictif et l'ancienne recherche >>> actualisation automatique
    tree.Nodes.Remove Node.Child.Index
Next i
Call init(Node.Key) ' dossier
Call ajoutFichier(Node) ' fichier
End Sub
Private Sub ajoutFichier(ByVal Node As MSComctlLib.Node)
Dim fichier As File
For Each fichier In fso.GetFolder(Node.Key & "\").Files
    Call tree.Nodes.Add(Node.Key, tvwChild, Node.Key & "\" & fichier.Name, fichier.Name, "htm")
    DoEvents
Next
End Sub

Private Sub tree_NodeClick(ByVal Node As MSComctlLib.Node)
On Error Resume Next
If Node.Image = "rep" Then
    Label2.Caption = CStr(fso.GetFolder(Node.Key).Size) & " octets"
    Label4.Caption = CStr(fso.GetFolder(Node.Key).DateCreated)
Else
    Label2.Caption = CStr(fso.GetFile(Node.Key).Size) & " octets"
    Label4.Caption = CStr(fso.GetFile(Node.Key).DateCreated)
End If
End Sub

Conclusion :


Et en plus on peut afficher toutes les info nécessaires sans aucune difficultés

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
63
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
13 juillet 2005

Juste comme ca .. en passant !
Ca plante sur NT car C:\System Volume Information
Permission denied
Messages postés
134
Date d'inscription
mardi 20 novembre 2001
Statut
Membre
Dernière intervention
16 juin 2008

Super, voilà que je découvre une nouvelle méthode grâce à FSO que je ne connaissait pas et qui fonctionne super bien et vite.
Tout comme Yves, j'y ai apporté quelques petites modifs comme :
1. Tri des répertoires
2. ajout d'un Listview pour y mettre les fichiers et donc ne plus les avoirs dans le Tree avec les informations de base comme taille et date de création.
3. Permet de voir les fichiers sur la root d'un lecteur
4. Affiche tous les lecteurs connus.

P.S.: je peux fournir les modifs que j'ai apporté à qui veut.
Messages postés
31
Date d'inscription
samedi 2 mars 2002
Statut
Membre
Dernière intervention
21 décembre 2003

Pas mal!!
Je repars de ton projet pour faire une comparaison de répertoires/fichiers (ça manque cruellement sous windows). Au passage, j'ai ajouter deux trois détails:

1 un checkbox au treeview: quand tu ouvres un dossier coché, tous les nodes fils sont ajoutés cochés également
2 Je trie le node qu'on ouvre, c'est plus facile pour retrouver ce qu'on cherche. Le seul prob, c'est que fichiers et répertoires se trouvent mélangés.

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.