IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Création de colonnes sur ListView


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut [VB6] Création de colonnes sur ListView
    Salut,

    Comme indiqué sur ce topic, je fais une ListView.
    J'ai créé l'objet, j'ai créé les colonnes... mais je suis incapable de les afficher =/

    J'ai rien trouvé d'intéressant sur MSDN, donc si quelqu'un a une réponse, je l'attends !

    Merci d'avance,

    Thunder

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    j'espere que cet exemple pourra t'aider



    à placer dans la Form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    Option Explicit
    '
    '
    'creez une Form
    'Placez y une ListView et une ImageList
    '
    'dans les propriétés de l'ImageList:
        'Personnalisé
        'onglet "Général"
        'Sélectionnez 16x16
        'Cliquez sur OK pour valider
    '
    '
    '*******************************
    'Necessite d'activer la reference Standard OLE Types
    '******************************
    '
    '
    'Choisissez un repertoire dans la boite de dialogue:
    'la procedure va ensuite lister les fichiers de ce repertoire
        'recupere l'icone de l'executable qui ouvre chaque fichier
        'affiche quelques infos sur ces fichiers
     
    Public Chemin As String
     
    Private Sub Form_Load()
    Dim objShell As Object, objFolder As Object
    Dim x As Integer, nbFichiers As Integer, SecuriteSlash As Integer
    Dim Tableau() As String
    Dim Direction As String, Executable As String
     
    '***************************************
    'choisir un repertoire cible
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
     
    On Error Resume Next
    Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path
    If objFolder.Title = "" Then Chemin = ""
    SecuriteSlash = InStr(objFolder.Title, ":")
    If SecuriteSlash > 0 Then Chemin = _
    Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
     
    If Chemin = "" Then Exit Sub
     
    '**********************************
    'lister les fichiers du repertoire
    Direction = Dir(Chemin & "\*.*")
     
    Do While Len(Direction) > 0
    nbFichiers = nbFichiers + 1
    ReDim Preserve Tableau(1 To nbFichiers)
    Tableau(nbFichiers) = Direction
    Direction = Dir()
    Loop
    '************************************
     
    ImageList1.ListImages.Clear
     
    If nbFichiers > 0 Then
     
    For x = 1 To nbFichiers
        'cherche l'executable asocié au fichier
        Executable = FindExecutable(Chemin & "\" & Tableau(x))
        'recupere le 1er icone
        ImageList1.ListImages.Add , "A" & x, GetIconFromFile(Executable, 0, False)
    Next x
     
    ListView1.SmallIcons = ImageList1
     
    With ListView1
        With .ColumnHeaders
            .Clear
            .Add , , "Nom fichier", 5000 ' diviser valeur par 10 pour utilisation en VBA
            .Add , , "Taille fichier", 1500 ' diviser valeur par 10 pour utilisation VBA
            .Add , , "Date derniere modification", 1500 ' diviser valeur par 10 pour utilisation VBA
        End With
     
    For x = 1 To nbFichiers
        .ListItems.Add , , Tableau(x)
        .ListItems(x).ListSubItems.Add , , _
        FileLen(Chemin & "\" & Tableau(x)) & " octets"
        .ListItems(x).ListSubItems.Add , , _
            Format(FileDateTime(Chemin & "\" & Tableau(x)), "DD/MM/YYYY")
        .ListItems(x).SmallIcon = "A" & x
    Next
    End With
     
    End If
     
    ListView1.View = 3
    End Sub


    à placer dans un module

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    Option Explicit
     
    Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" _
    (ByVal pszPath As Any, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, _
    ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
     
     
    Public Declare Function FindExecutableA Lib "shell32.dll" _
    (ByVal lpFile As String, ByVal lpdirectory As String, _
    ByVal lpResult As String) As Long
    Public Const MAX_FILENAME_LEN = 256
     
     
    Public Declare Function OleCreatePictureIndirect _
    Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _
    ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
     
     
    Public Type PicBmp
       Size As Long
       tType As Long
       hBmp As Long
       hPal As Long
       Reserved As Long
    End Type
     
     
    Public Type GUID
       Data1 As Long
       Data2 As Integer
       Data3 As Integer
       Data4(7) As Byte
    End Type
     
     
    Public Type SHFILEINFO
      hicon As Long
      iIcon As Long
      dwAttributes As Long
      szDisplayName As String * 260
      szTypeName As String * 80
    End Type
     
    Public Function GetIconFromFile(FileName As String, IconIndex As Long, _
    UseLargeIcon As Boolean) As IPicture
    '
    '********************
    'Necessite d'activer la reference Standard OLE Types
    '********************
    '
    Dim b As SHFILEINFO
    Dim retval As Long
    Dim pic As PicBmp
    Dim IPic As IPicture
    Dim IID_IDispatch As GUID
     
     
    retval = SHGetFileInfo(FileName, 0, b, Len(b), &H100)
     
     
    With IID_IDispatch
    .Data1 = &H20400
    .Data4(0) = &HC0
    .Data4(7) = &H46
    End With
     
     
    With pic
    .Size = Len(b)
    .tType = 3 'vbPicTypeIcon
    .hBmp = b.hicon
    End With
     
     
    Call OleCreatePictureIndirect(pic, IID_IDispatch, 1, IPic)
    Set GetIconFromFile = IPic
     
     
    End Function
     
     
     
    Public Function FindExecutable(S As String) As String
    'trouver quel executable ouvre le fichier cible
    Dim i As Integer
    Dim S2 As String
     
    S2 = String(MAX_FILENAME_LEN, 32) & Chr$(0)
    i = FindExecutableA(S & Chr$(0), vbNullString, S2)
    If i > 32 Then
    FindExecutable = Left$(S2, InStr(S2, Chr$(0)) - 1)
    Else
    FindExecutable = ""
    End If
     
     
    End Function



    cet exemple fonctionne aussi en VBA Excel ...meme avec Excel97...;o)

    il suffit de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Form_Load()
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub UserForm_Initialize()
    et adapter la taille des colonnes dans la ListView



    bonne journée
    michel

  3. #3
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Merci

  4. #4
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut [VB6] Création de colonnes sur ListView
    Salut !

    Vous risquez de me trouver très chiant sur ce topic, en fait j'ai beaucoup de restrictions.
    J'avais déjà créé un topic sur ça, rien de plus.

    Donc je crée une application servant à lister des items d'un jeu video. Je voulais créer une listview pour classer tout ça. J'ai quelques restrictions :

    • J'ai besoin de créer les colonnes "Nom", "Classe", "Type", "Commentaire"
    • J'ai besoin de savoir comment ajouter un item à une ligne (Ça doit bien être quelque chose du style "ListView1.AddItem "Nom ici", "Classe ici", "Type ici", "Commentaire ici"" mais bon... aucune idée
    • Je crois que c'est juste ça finalement
    J'aimerais bien avoir le code / infos exacts pour faire ceci, je suis très loin d'être un pro en VB ^^ (J'suis bien meilleur en VBS ^^)

    Merci d'avance,

    Thunder

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    cet autre fil de discussion n'a pas répondu à ta question ?

    http://www.developpez.net/forums/sho...d.php?t=142678



    bonne journée
    michel

  6. #6
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Plus ou moins, quand j'avais vu le code, je croyais que c'était plus facile que je l'avais prévu, mais là j'ai aucune idée comme créer les colonnes, et comment ajouter des items dans ses colonnes.

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Discussions fusionnées
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Je te donne déjà ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    With ListView1
                For i = 1 To .ColumnHeaders.Count
                    .ColumnHeaders.Remove i
                Next
                .ColumnHeaders.Add 1, , "Nom"
                .ColumnHeaders.Add 2, , "Classe"
                .ColumnHeaders.Add 3, , "Type
                .ColumnHeaders.Add 4, , "Commentaire"
                .ColumnHeaders(1).Width = 1200
                .ColumnHeaders(2).Width = 700
                .ColumnHeaders(3).Width = 1200
                .ColumnHeaders(4).Width = 2200
            End With
    Pour ajouter des elemnets à ta liste, tu vas chercher un peu !!

    Interesse toi à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim itmX As listitem
                        Set itmX = .ListItems.Add ......
                        itmX.SubItems(1) = ......
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  9. #9
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Merci, je vais tester et revenir après ^^

    EDIT:
    Ceci ne crée pas de colonnes
    Ça ne crée rien du tout en fait =/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    With ListView1
                For i = 1 To .ColumnHeaders.Count
                    .ColumnHeaders.Remove i
                Next
                .ColumnHeaders.Add 1, , "Nom"
                .ColumnHeaders.Add 2, , "Classe"
                .ColumnHeaders.Add 3, , "Type
                .ColumnHeaders.Add 4, , "Commentaire"
                .ColumnHeaders(1).Width = 1200
                .ColumnHeaders(2).Width = 700
                .ColumnHeaders(3).Width = 1200
                .ColumnHeaders(4).Width = 2200
            End With

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    quel type de vue à tu défini ?

    0 Icone
    1 SmallIcone
    2 List
    3 Report


    bon apres midi
    michel

  11. #11
    Membre actif Avatar de Jihnn
    Inscrit en
    Décembre 2005
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 330
    Points : 273
    Points
    273
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/03/2009, 12h56
  2. fusionner des colonnes sur un listview?
    Par cortex59 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/06/2008, 21h02
  3. [vb6] Changez dynamiquement ordre des colonnes dans listview ?
    Par sun19 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/10/2006, 16h50
  4. [VB6]Tri multi-colonnes sur tableau de structure
    Par ELGUEVEL dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 08h02
  5. [VB6] Titre de colonne sur 2 lignes
    Par falbalaa dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/02/2004, 20h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo