Icone dans un listview (explorateur) VB6

SgtJazz Messages postés 18 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 20 décembre 2005 - 30 mars 2004 à 00:18
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 14 avril 2004 à 14:50
je travail sur un explorateur en utilisant un treeview et un listview. je voudrais afficher les icones que windows associe au extantion des fichier pour les fichiers affiche dans mon listview.
(ex: un fichier est ???????.doc, je dirais a l'element du listview d'utiliser le meme icone que celui d'un .doc dans l'explorateur de windows.

merci de me donner un example simple car je suis un amateur. j<ai deja etudier la source d'un programme nomme VbExplorer mais il est trop complexe,, je n,arrive pas a dechifrer ce que je recherche

element de mon programe actuel:

j<utiliser un imagelist pour definir les images pour mon treeview,un treeview et un listview

un gros Merci,
SgtJazz

2 réponses

SgtJazz Messages postés 18 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 20 décembre 2005
30 mars 2004 à 01:31
j'ai cru bon d'ajouter mon code source
les objet sur la feille sont :
TV1 est un treeview
LV1 est un listview
imageList1 est un imagelist

'\\\  DECLARATION  ///

Option Explicit
Private fso As New FileSystemObject
Dim LV1Path As String

Private Sub Form_Load()
TV1.Enabled = False
  Dim imgX As ListImage
   ' Add images to ListImages collection.
   Set imgX = ImageList1. _
   ListImages.Add(, "fermer", LoadPicture(App.Path & "\image\fermer.gif"))
   Set imgX = ImageList1. _
   ListImages.Add(, "fermerT", LoadPicture(App.Path & "\image\fermerT.gif"))
   Set imgX = ImageList1. _
   ListImages.Add(, "fermerI", LoadPicture(App.Path & "\image\fermerI.gif"))
   Set imgX = ImageList1. _
   ListImages.Add(, "fichier", LoadPicture(App.Path & "\image\fichier.gif"))
   Set imgX = ImageList1. _
   ListImages.Add(, "fichierT", LoadPicture(App.Path & "\image\fichierT.gif"))
   Set imgX = ImageList1. _
   ListImages.Add(, "ouvert", LoadPicture(App.Path & "\image\ouvert.gif"))
   Set imgX = ImageList1. _
   ListImages.Add(, "ouvertT", LoadPicture(App.Path & "\image\ouvertT.gif"))
   Set imgX = ImageList1. _
   ListImages.Add(, "ouvertI", LoadPicture(App.Path & "\image\ouvertI.gif"))
   
   
   TV1.ImageList = ImageList1
   LV1.SmallIcons = ImageList1
   LV1.Icons = ImageList1
   LV1.View = lvwIcon
   
 Label1.Caption = "en cours de creation de la structure du disque dur C  (cette operation peut prendre quelque minute)"
 Show
 Refresh
 DoEvents
 Screen.MousePointer = vbHourglass
 AjouteRep fso.GetDrive("c").RootFolder
 '
  Screen.MousePointer = vbDefault
  Label1.Caption = "creation de la structure du disque dur c accomplis"
 Me.Show
TV1.Enabled = True
End Sub
Private Sub AjouteRep(fld As Folder, Optional Node As Node = Nothing)
    If fld.Name = "RECYCLER" Then Exit Sub
    If fld.Name = "System Volume Information" Then Exit Sub
    'ajoute le dossier
Dim n As Node
    If fld.IsRootFolder = True Then
        Set n = TV1.Nodes.Add(, , , fld.Path, "fermer", "ouvert")
   Else
       Set n = TV1.Nodes.Add(Node, tvwChild, , fld.Name, "fermer", "ouvert")
    End If
    
    'traite les sous-dossier
    Dim fld1 As Folder
    For Each fld1 In fld.SubFolders
        AjouteRep fld1, n
    Next
End Sub

Private Sub LV1_ItemClick(ByVal Item As MSComctlLib.ListItem)
If Item.Icon <> "fermer" Then Exit Sub 'si il ne sagit pas d'un dossier => sort de la sub
LV1.ListItems.Clear

'construit le nom du repertoire
Dim fic As String
Dim rep As String
rep = LV1Path
If Right(rep, 1) <> "" Then rep = rep & ""
fic = Item.Text

rep = rep & fic
LV1Path = rep

Screen.MousePointer = vbHourglass

Dim fld As Folder
Set fld = fso.GetFolder(rep)
Dim f As File
Dim fldl As Folder
Dim message As Boolean
message = False

'ajoute les elements dossier a LV1 sans prendre en compte la poubelle et l'information de volume systeme.
For Each fldl In fld.SubFolders    If fldl.Name "RECYCLER" Then message True    If fldl.Name "System Volume Information" Then message True
If message = False Then
    Dim li As ListItem
    Set li = LV1.ListItems.Add(, , fldl.Name, "fermer", "fermer")
    li.ListSubItems.Add Key:="size", Text:=fldl.Size
    li.ListSubItems.Add Key:="date", Text:=fldl.DateLastModified
End If
Next

'ajouter les element fichier a LV1
For Each f In fld.Files
    Dim li2 As ListItem
    Set li2 = LV1.ListItems.Add(, , f.Name, "fichier", "fichier")
    li2.ListSubItems.Add Key:="size", Text:=f.Size
    li2.ListSubItems.Add Key:="date", Text:=f.DateLastModified
Next
Screen.MousePointer = vbDefault

End Sub

Private Sub TV1_NodeClick(ByVal Node As MSComctlLib.Node)
LV1.ListItems.Clear

'construit le nom du repertoire
Dim fic As String
Dim rep As String
rep = Node.FullPath
If Right(rep, 1) <> "" Then rep = rep & ""
LV1Path = rep
Screen.MousePointer = vbHourglass
Dim fld As Folder
Set fld = fso.GetFolder(rep)
Dim f As File
Dim fldl As Folder
Dim message As Boolean 'sera utile pour filtrer des dossiers  a ne pas afficher
message = False

'ajoute les elements dossier a LV1 sans prendre en compte la poubelle et l'information de volume systeme.
For Each fldl In fld.SubFolders    If fldl.Name "RECYCLER" Then message True    If fldl.Name "System Volume Information" Then message True
If message = False Then
    Dim li As ListItem
    Set li = LV1.ListItems.Add(, , fldl.Name, "fermer", "fermer")
    li.ListSubItems.Add Key:="size", Text:=fldl.Size
    li.ListSubItems.Add Key:="date", Text:=fldl.DateLastModified
End If
Next

'ajouter les element fichier a LV1
For Each f In fld.Files
    Dim li2 As ListItem
    Set li2 = LV1.ListItems.Add(, , f.Name, "fichier", "fichier")
    li2.ListSubItems.Add Key:="size", Text:=f.Size
    li2.ListSubItems.Add Key:="date", Text:=f.DateLastModified
Next
Screen.MousePointer = vbDefault

End Sub


un gros Merci,
SgtJazz
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
14 avril 2004 à 14:50
Salut!
tu peux essayer en associant les images directement au moment de la création des nodes, ex:
'img est la string de la key de l'image dans imagelist
TV1.Nodes.Add "ROOT", tvwChild, "child", "Child", "img"

Ainsi, lorsque tu vas insérer un fichier, fait un select case sur l'extension des fichier:
select case right(f.name,3)
case is = "doc"
img = "image word" 'par exemple
case ...
end select

Je fais moi aussi un explorateur de fichier mais sous Access.
Mais c'est relativement identique. @+

TBBUIM
0
Rejoignez-nous