ListView

Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 22 août 2009 à 00:57
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 25 août 2009 à 21:03
Salut !

Y a t-il un moyen de faire afficher qu'une seule et unique extension de fichier dans un ListView ?
Je voudrais faire afficher l'extension *.mdb
Avez vous une idée svp ?

Merci

----------
OS : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !

9 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
22 août 2009 à 01:17
Salut,

C'est pas le listview qui décide, mais le code qui le remplis...

Si on ne sait pas de quoi est composé ton code on ne pourra pas t'aider,
poste-le ici.

++

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
22 août 2009 à 01:51
Voici le lien du code que j'étudie en ce moment :
http://www.vbfrance.com/code.aspx?ID=23514
Deux formulaires et un module.
Merci pour ton aide Mayzz
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
22 août 2009 à 02:18
Arf, j'ai pas vb6 sous la main, j'suis sur un poste en x64 la...

Du coup je peu pas bien t'aider, d'après ce que je vois c'est du fso, donc il doit y avoir un fso.GetFiles quelque part...

Essaye un filtre genre

if lcase(right(File.Filename,3)) = ".mdf" then...

File étant le fichier traité par le Fso.

++

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 août 2009 à 07:44
salut,

comme souvent, tout est présent sur codyx.org


Option Explicit

Private Sub Form_Load()
    With ListView1
        .LabelEdit = lvwManual
        .FullRowSelect = True
        .View = lvwReport
        .GridLines = False
        .ColumnHeaders.Add 1, , "Fichiers MDB"
        .ColumnHeaders(1).Width = .Width - 60
    End With
    
    
    Dim aResultat() As String
    Dim i As Long
    For i = 0 To GetFilesPathFromDirectory("C:\Windows", aResultat(), "*.mdb")
        AppendLineToLV ListView1, aResultat(i)
    Next i
    Erase aResultat
End Sub



'http://www.codyx.org/snippet_lister-tous-fichiers-repertoire_198.aspx#688
Private Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
'   GetFilesPathFromDirectory retourne -1 si aucun fichier  trouvé
'   sinon retourne la dimension du tableau,  donc NB fichiers -1 (tableau commence à l'indice 0)
'   init les résultats
    GetFilesPathFromDirectory = -1
    Erase aRet
    If RightB$(sDir, 2) <> "" Then sDir = sDir & ""
'   formate le  chemin
    Dim sFile As String
    sFile = Dir(sDir & sFilter, vbHidden Or vbSystem)
'    boucle sur tous les fichiers
    Do
        If LenB(sFile) Then
            GetFilesPathFromDirectory = GetFilesPathFromDirectory + 1
            ReDim Preserve aRet(GetFilesPathFromDirectory)
            aRet(GetFilesPathFromDirectory) = sDir & sFile
            sFile = Dir
        End If
    Loop Until LenB(sFile) = 0
End Function



'http://www.codyx.org/snippet_ajouter-ligne-listview-items-multiples_794.aspx#2387
Private Sub AppendLineToLV(ByRef LV As ListView, ParamArray vasValues() As Variant)
    If (LV.ColumnHeaders.Count > 0) And (Not UBound(vasValues) = -1) Then
        Dim LI As ListItem
        Dim i As Integer
        LV.ListItems.Add , , vasValues(0)
        Set LI = LV.ListItems.Item(LV.ListItems.Count)
        For i = 1 To UBound(vasValues)
            If i = LV.ColumnHeaders.Count Then Exit For
            LI.SubItems(i) = vasValues(i)
        Next i
        Set LI = Nothing
    End If
End Sub

++
[hr]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
25 août 2009 à 00:02
Salut et merci pour votre aide.

Mayzz : La ligne fso.GetFiles n'existe pas dans le projet. Je n'ai donc pas pu faire mettre au load de mon formulaire la commande.

PCPT : Merci pour ton code mais il ne fonctionne pas malgré que je l'ai copié/collé comme donné ci-dessus.

Il n'y a pas d'autre moyens de faire afficher dans une ListView uniquement les fichier *.mdb comme le FileListBox.Pattern = "*.mdb" ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 août 2009 à 08:09
il ne marche pas?... mais si

tu cherches dans le bon dossier?
j'ai mis c:\windows\, à toi de remplacer si nécessaire

For i = 0 To GetFilesPathFromDirectory(app.path & "", aResultat(), "*.mdb")
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
25 août 2009 à 19:28
Salut PCPT, non il ne m'affiche toujours pas ce dont j'ai besoin. Voici ton code ci-dessous.

Private Sub Form_Load()
With LstFiles
.LabelEdit = lvwManual
.FullRowSelect = True
.View = lvwReport
.GridLines = False
.ColumnHeaders.Add 1, , "Fichiers MDB"
.ColumnHeaders(1).Width = .Width - 60
End With

Dim aResultat() As String
Dim I As Long
For I = 0 To GetFilesPathFromDirectory(App.Path & "", aResultat(), "*.mdb")
AppendLineToLV LstFiles, aResultat(I)
Next I
Erase aResultat
End Sub

Private Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
    GetFilesPathFromDirectory = -1
    Erase aRet
    If RightB$(sDir, 2) <> "" Then sDir = sDir & ""
    Dim sFile As String
    sFile = Dir(sDir & sFilter, vbHidden Or vbSystem)
    Do
        If LenB(sFile) Then
            GetFilesPathFromDirectory = GetFilesPathFromDirectory + 1
            ReDim Preserve aRet(GetFilesPathFromDirectory)
            aRet(GetFilesPathFromDirectory) = sDir & sFile
            sFile = Dir
        End If
    Loop Until LenB(sFile) = 0
End Function

Private Sub AppendLineToLV(ByRef LV As ListView, ParamArray vasValues() As Variant)
    If (LV.ColumnHeaders.Count > 0) And (Not UBound(vasValues) = -1) Then
        Dim LI As ListItem
        Dim I As Integer
        LV.ListItems.Add , , vasValues(0)
        Set LI = LV.ListItems.Item(LV.ListItems.Count)
        For I = 1 To UBound(vasValues)
            If I = LV.ColumnHeaders.Count Then Exit For
            LI.SubItems(I) = vasValues(I)
        Next I
        Set LI = Nothing
    End If
End Sub


Je ne sais pas s'il me manque quelque chose ou si vous avez besoin du code de toute ma page pour m'aider à voir le problème.

Merci

----------
OS : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 août 2009 à 20:45
un point d'arrêt sur aRet(GetFilesPathFromDirectory) = sDir & sFile, sFile est cohérent? ou tu n'entre pas dans la boucle?

si ok, point d'arrêt sur AppendLineToLV LstFiles, aResultat(I), aResultat(I) est cohérent?
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
25 août 2009 à 21:03
Au début, après le Load, sans le :
Private Function GetFilesPathFromDirectory(ByVal sDir As String, ByRef aRet() As String, Optional ByVal sFilter As String = "*.txt") As Long
...
End Function

et le :
Private Sub AppendLineToLV(ByRef LV As ListView, ParamArray vasValues() As Variant)
...
End Sub

Il y avait une erreur. Mais une fois que j'ai mis ces deux codes je n'ai plus d'erreurs. Mais il ne m'affiche toujours pas l'extension.
0
Rejoignez-nous