Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LAUTREESIZE


Description

Cliquez pour voir la capture en taille normale
Un genre de treesize pro mais en vb. La premiere ouverture peut-etre longue en criss mais c'est a cause des fso. Le programe peut avoir l'aire planté mais non. J'ai pas trouvé de meilleur facon d'aller chercher la taille des dossiers.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de joebarteamv le 30/06/2008 00:30:07

Bonjour; tous les droits te sont reservées et aussi les bugs!!!
ca bug ton logiciel;
ensuite point de vue creation ; il y a de la conception et cela a retenu mon attention!
Essaye par exemple de faire des gestion interruptions plus efficaces et de travailler avec des tableaux dynamiques pour ameliorer la rapidité du prog!!
Bonne continuation
(le bug ce le path qui prend le nom du volume entier au lieu de prendre son nom msdos)

signaler à un administrateur
Commentaire de jack le 30/06/2008 01:20:47 administrateur CS

Waouh : 100 images indexées pour afficher le pourcentage !
Tu pourrais t'inspirer les ProgessBar foisonnant sur le site pour générer l'image associée au pourcentage.
+ Oui, il y a un binz avec le nom UNC des Drives
Chez moi, par exemple, Drive1.Drive donne "c:[Jack8_C]"

Idée d'amélioration :
Pourvoir faire de resize sur la forme
+ une SplitBar entre les TreeView et les ListView (et ListView entre elles)

signaler à un administrateur
Commentaire de Renfield le 30/06/2008 09:11:34 administrateur CS

d'accord avec Jack... je lance et boum, chemin d'accès introuvable..

FileExplorer.Path = Drive1.Drive & "\"
donne:  

d: [DONNEES]\

signaler à un administrateur
Commentaire de Renfield le 30/06/2008 09:14:33 administrateur CS

le code de ShowExplore me fait m'interroger...
Recursivité, ca te dit quelque chose ?

tu as prévu un nombre précis de sous-niveaux dans l'arborescence .... :S

regarde cette source, incorporée dans ton projet, ca pourrais accelerer la chose.
http://www.vbfrance.com/codes/LISTEZ-VOS-FICHIER-FACILEMENT-RAPIDEMENT_43640.aspx

signaler à un administrateur
Commentaire de Renfield le 30/06/2008 10:08:41 administrateur CS

j'ai fait l'exercice d'ajouter ma classe...
j'ai viré tout ton code.  j'ai mis que l'essentiel (liste des dossiers dans ListView1, taille de ceux-ci)...

pas de fichiers, d'arbre, ni de pourcentage... mais coté rapidité, ca n'a rien a voir, surtout que pendant le calcul de la taille, on peut faire autre chose, changer de répertoire, etc...

j'ai inséré également le code:
http://www.vb-helper.com/howto_format_bytes_big.html


===========================================================

modification de ma classe (ajout d'une propriété FolderSize, qui parcoure le tout récursivement)

Private mbAbort As Boolean

Public Sub Terminate()
    mbAbort = True
    DoEvents
    If mhFind Then
        FindClose mhFind
        mhFind = 0
    End If
End Sub

Public Property Get FolderSize() As Variant
Dim oDir As CDir
    If (Me.Attributes And vbDirectory) = vbDirectory Then
        Set oDir = New CDir
        oDir.Initialize Me.FullPath & "\"
        Do Until oDir.EOF
            If (oDir.Attributes And vbDirectory) = vbDirectory Then
                FolderSize = FolderSize + oDir.FolderSize
                DoEvents
            Else
                FolderSize = FolderSize + oDir.FileSize
            End If
            oDir.MoveNext
            If mbAbort Then
                Exit Do
            End If
        Loop
    End If
End Property

'# On démarre une nouvelle enumeration
'# Par default, on accepte tousles atributs
Public Sub Initialize(ByVal vsPath As String, Optional veAttributes As FileAttributes = &HFFFFFFFF)
Dim i As Long
    mbAbort = False
    '# Si une recherche etait deja en cours, on la stoppe
    If mhFind Then
        Call FindClose(mhFind)
    End If
    
    '# On récupère le chemin
    i = InStrRev(vsPath, "\")
    If i Then
        msPath = Left$(vsPath, i)
    Else
        msPath = vbNullString
    End If
    
    '# Si nous avons 'C:\MonDossier\'
    '# Rien ne sera trouvé... on ajoute donc un joker
    If i = Len(vsPath) Then
        vsPath = vsPath & "*"
    End If
    
    '# On réinitalise le cache du nom.
    msName = vbNullString

    '# On démarre la recherche
    mhFind = FindFirstFile(StrPtr(vsPath), mtFileInfo)
    If mhFind > 0 Then
        '# La requete a été acceptée. On enregistre les parametres de la recherche
        meRequiredAttributes = veAttributes
        '# Permet de passer sur un fichier valide.
        msName = Me.Name
    Else
        '# Echec. on remet le handle à 0 (vaut -1)
        mhFind = 0
    End If
End Sub


===========================================================

CODE DE Form1

Option Explicit

Private moDir As CDir

Private Sub Drive1_Change()
    Explore Left$(Drive1.Drive, 2)
End Sub

Private Sub Explore(ByVal vsPath As String)
    If Right$(vsPath, 1) <> "\" Then
        vsPath = vsPath & "\"
    End If
    
    If Nothing Is moDir Then
        Set moDir = New CDir
    Else
        moDir.Terminate
    End If
    moDir.Initialize vsPath, [Standard Folder]
    
    ListView1.Tag = vsPath
    ListView1.ListItems.Clear
    ListView1.ListItems.Add.SubItems(1) = "."
    ListView1.ListItems.Add.SubItems(1) = ".."
    On Local Error GoTo Handler
    Do Until moDir.EOF
        With ListView1.ListItems.Add
            .SubItems(1) = moDir.Name
            .SubItems(4) = FormatBytes(moDir.FolderSize)
        End With
        moDir.MoveNext
    Loop
Exit Sub
Handler:
    If Err.Number = 35605 Then
        '# Le contrôle de cet élément a été supprimé
        '# Peut arriver, si on change de drive avat d'avoir terminé... rien de grave, on quitte la sub.
    Else
        Err.Raise Err.Number, Err.Source, Err.Description
    End If
End Sub

Private Function FormatBytes(ByVal num_bytes As Double) As String
Const ONE_KB As Double = 1024
Const ONE_MB As Double = ONE_KB * 1024
Const ONE_GB As Double = ONE_MB * 1024
Const ONE_TB As Double = ONE_GB * 1024
Const ONE_PB As Double = ONE_TB * 1024
Const ONE_EB As Double = ONE_PB * 1024
Const ONE_ZB As Double = ONE_EB * 1024
Const ONE_YB As Double = ONE_ZB * 1024
Dim value As Double
Dim txt As String
    ' See how big the value is.
    If num_bytes <= 999 Then
        FormatBytes = Format$(num_bytes, "0") & " bytes"
    ElseIf num_bytes <= ONE_KB * 999 Then
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_KB) & " KB"
    ElseIf num_bytes <= ONE_MB * 999 Then
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_MB) & " MB"
    ElseIf num_bytes <= ONE_GB * 999 Then
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_GB) & " GB"
    ElseIf num_bytes <= ONE_TB * 999 Then
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_TB) & " TB"
    ElseIf num_bytes <= ONE_PB * 999 Then
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_PB) & " PB"
    ElseIf num_bytes <= ONE_EB * 999 Then
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_EB) & " EB"
    ElseIf num_bytes <= ONE_ZB * 999 Then
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_ZB) & " ZB"
    Else
        FormatBytes = ThreeNonZeroDigits(num_bytes / ONE_YB) & " YB"
    End If
End Function

Private Function ThreeNonZeroDigits(ByVal value As Double) As String
    If value >= 100 Then
        ' No digits after the decimal.
        ThreeNonZeroDigits = Format$(CInt(value))
    ElseIf value >= 10 Then
        ' One digit after the decimal.
        ThreeNonZeroDigits = Format$(value, "0.0")
    Else
        ' Two digits after the decimal.
        ThreeNonZeroDigits = Format$(value, "0.00")
    End If
End Function

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If Not Nothing Is moDir Then
        moDir.Terminate
    End If
End Sub

Private Sub ListView1_DblClick()
Dim nPos As Long
    If Not Nothing Is ListView1.SelectedItem Then
        With ListView1.SelectedItem
            If .SubItems(1) = "." Then
                Explore ListView1.Tag
            ElseIf .SubItems(1) = ".." Then
                nPos = InStrRev(ListView1.Tag, "\", Len(ListView1.Tag) - 1)
                If nPos Then
                    Explore Left$(ListView1.Tag, nPos)
                Else
                    Explore ListView1.Tag
                End If
            Else
                Explore ListView1.Tag & ListView1.SelectedItem.SubItems(1)
            End If
        End With
    End If
End Sub

===============================================================

si tu as des questions, n'hésites pas.

signaler à un administrateur
Commentaire de Renfield le 30/06/2008 10:11:26 administrateur CS

vu que l'on peut resizer les colonnes, l'utilisation d'images pour le % ne va pas : si on agrandit la colonne, l'image ne reflete plus le % utilisé.

il serait bien de pouvoir voir également, le pourcentage utilisé  / libre du lecteur
ou un recapitulatif: je suis dans C:\Windows\System32, par exemple, je vois le % de chaque sous dossier, fichiers...
mais il faudrait également le % que représente C:\Windows\System32 sur le disque

enfin, a toi de jouer ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

aide sur les treeview et listview [ par guillaume ] Bonjour,je suis débutant et je cherche à faire cela :Du coté gauche, un treeview dans lequel je trouve le poste de travial avec tous mes lecteurs, que redimensionnement d'un contrôle [ par brisky ] salut à tous,j'aimerais savoir comment redimentionner un treeview et un listview à l'exécution. comme dans l'explorateur windows, quand on se met entr combiner treeview/listview [ par roby ] Salut à tousQuelqu'un saurait-il comment on fait pour combiner un TreeView et un ListView, à la manière de l'explorateur Windows ?&gt; Entre les deux Partage de dossier [ par Max666 ] Salut tout le monde ! Est-ce que quelqu'un sait comment partager des dossiers ???Ou envoyer des fichiers</font c Treeview ..... hhheeeeelllpppp [ par CoChOnOu ] Bon je sais que je vais passer pour un gros nul mais bon ..... c'est le lot de tout débutant ;-))Voilà mon problème en fait : ca va faire presque 4 jo Lister un disque dans un TREEVIEW [ par cyrilp ] Tout est dans le titre...URGENTCe que je voudrais, c'est pouvoir lister le contenu du HD ou tout autre disque/disquette/Cd voire même pourquoi popup menu dans listview ou treeview en VBA [ par reman ] Salut à tous,Je n'arrive pas à créer un popup sur un item d'une listview ou d'un treeview. Je débute, alors si quelqu'un pouvait m'aider en me donnant popup & listview ou treeview [ par reman ] please help,peut on faire des popup dans des controles treeview ou listview ? et en VBA. J'y arrive pômerci Affichage dans treeview et listview de la liste des fichiers d'une adresse ftp [ par Anthomicro ] Bonjour,j'aimerais savoir si il existe un code me permettant de recevoir la liste des répertoires et des fichiers qui sont dans une adresse ftp et d'a Problèmes multiples avec les listview [ par nruiz ] Bonjour a tous et bonne année :) g qq problèmes avec les listview si une ame charitable pouvait m'aider :)))1-comment mettre un des éléments en gras d


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.