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

Access Discussion :

Listview style windows


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Points : 61
    Points
    61
    Par défaut Listview style windows
    Bonjour

    apres une recherche sur le forum j'ai vu qu'il etait possible de faire des tris croissant et decroissant lorsque l'on clique sur les colonnes d'un listview.

    mais je n'est pas trouvé de solution pour faire comme sur windows avec des entetes de colonne qui ont un petit triangle pour savoir si le tri est croissant ou decroissant (ce n'est pas la seul fonction qui m'interesse).

    pourriez vous me dire comment faire ou me donner une piste.

    merci

    ps si il faut s'orienter vers des api ou trouver des infos.

  2. #2
    seb92400
    Invité(e)
    Par défaut
    Sans passer par des api, je pense qu'il est possible de faire juste un peu de programmation. En partant du principe qu'on peut ajouter, par exemple', TOUS en haut d'une liste déroulante, on peut très bien se demander s'il n'est pas possible de paramètrer une liste, et selon ce qu'on lui demande, d'afficher "croissant" ou "décroissant"...

  3. #3
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut, je ne sais pas sur quel exemple tu es tombé mais celui de Maxence HUBICHE le fait bien. Cela passe par la manipulation de la propriété ColumnHeaders et Icon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lvwElements.ColumnHeaders(Colonne).Icon = 0 ' ou 1

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Points : 61
    Points
    61
    Par défaut
    Merci de vos reponses.

    il n'y a as que le coup de l'icone qui m'intéresse mais aussi le fait de pouvoir redimensionné les colonnes par clique et relache.
    et peut etre pouvoir faire un menu contextuel pour l'entete de la liste.

    donc je recherche un object qui resemble au listview mais qui soit plus evolué.

  5. #5
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut, voici la base exemple dont je parle. Tout y est...
    Fichiers attachés Fichiers attachés

  6. #6
    seb92400
    Invité(e)
    Par défaut
    ...

  7. #7
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Citation Envoyé par noawsen
    ...
    en français ça donne quoi?

  8. #8
    seb92400
    Invité(e)
    Par défaut
    En fait, je ne voyais pas le fichier lorsque j'ai lu ton post... Et après avoir écrit mon message qui demandais où était le fichier joint, j'ai vu qu'il était là... Enfin bref... Je vais consulter mon opticien...

  9. #9
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Ta vue est encore bonne. C'est moi qui ai un peu galéré à mettre la pièce jointe

  10. #10
    seb92400
    Invité(e)
    Par défaut
    Tout s'explique... J'annule mon rdv chez le psy...

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Points : 61
    Points
    61
    Par défaut
    OK

    je vais plancher sur cette exemple

    en vous remerkiant

  12. #12
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Bonsoir,
    juste dans le cas où tu utiliserais cette solution, te signaler un léger bug qui
    survient dans un cas bien precis. Fais un test:
    Choisis produits en affichage détail et applique un tri sur la
    dernière colonne.
    Juste après, choisis les commandes et là Blam! une erreur d'index!
    Solution: ajouter la ligne entre ******* comme indiqué ci-dessous
    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
    Sub OrderByCol(ByVal NumCol As Long, ByVal NewFill As Boolean)
    '---------------------------------------------------------------------------------------
    ' Procedure : OrderByCol
    ' Créée le  : jeudi 10 mars 2005 22:55
    ' Auteur    : Maxence
    ' Objet     : Procédure gérant le tri
    ' Arguments : NumCol = N° de la colonne sélectionnée lors du clic
    '             NewFill = VRAI s'il s'agit d'un remplissage de la liste, faux sinon
    '---------------------------------------------------------------------------------------
    '
        Static Colonne As Long
    debut:
        'La liste est triée
        lvwElements.Sorted = True
        'Si c'est un RECLIC
        If NumCol = Colonne And Not NewFill Then
            'Changer l'ordre de tri et l'affichage du petit logo qui va avec
            If lvwElements.SortOrder = 0 Then
                lvwElements.SortOrder = 1
                lvwElements.ColumnHeaders(NumCol).Icon = 2
            Else
                lvwElements.SortOrder = 0
                lvwElements.ColumnHeaders(NumCol).Icon = 1
            End If
        Else        'Sinon, remise à 0 de tous les affichage => tri croissant
     
        '****** ICI *******
        If NewFill Then Colonne = 0
        ' ** FIN ICI ******
     
            If Colonne <> 0 Then lvwElements.ColumnHeaders(Colonne).Icon = 0
            Colonne = NumCol
            NewFill = False
            lvwElements.SortOrder = 1
            lvwElements.SortKey = lvwElements.ColumnHeaders(NumCol).Index - 1
            'et on met à jour
            GoTo debut
        End If
     
    End Sub

  13. #13
    Membre actif Avatar de zEndymion
    Homme Profil pro
    Responsable des applications
    Inscrit en
    Avril 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des applications
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2006
    Messages : 162
    Points : 203
    Points
    203
    Par défaut
    Bonjour,

    une autre façon de trier une listview :
    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
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
     
    Public Sub SortListView(ByVal Index As Integer, _
                            ByVal DataType As ListViewListDataType, Optional ByVal Ascending As Boolean = True, _
                            Optional ByVal InverseSort As Boolean = True)
     
        ' ********* FONCTIONS ******************************************************************
        ' -------------------------------------------------------------------------
        ' Trier une ListView pour un texte, une date ou un chiffre
        ' -------------------------------------------------------------------------
        ' Parameters:
        '
        '   ListView    :Référence a l'object ListView
        '   Index       :Index of the column in the ListView to be sorted. The first
        '                column in a ListView has an index value of 1.
        '   DataType    :Sets whether the data in the column is to be sorted
        '                alphabetically, numerically, or by date.
        '   Ascending   :Sets the direction of the sort. True sorts A-Z (Ascending),
        '                and False sorts Z-A (descending)
        ' -------------------------------------------------------------------------
     
        On Error GoTo SortListView_Error
        On Error Resume Next
        Dim i As Integer
        Dim l As Long
        Dim strFormat As String
        ' Bloque la Maj ecran
        Call LocklistView
        If InverseSort Then _
           Ascending = IIf(olistView.SortOrder = lvwAscending, False, True)
        Dim blnRestoreFromTag As Boolean
        Select Case DataType
        Case ldtString
            ' Sort alphabetically. This is the only sort provided by the
            ' MS ListView control (at this time), and as such we don't really
            ' need to do much here
            blnRestoreFromTag = False
        Case ldtNumber
            ' Sort Numerically
            strFormat = String$(20, "0") & "." & String$(10, "0")
            ' Loop through the values in this column. Re-format the values so
            ' as they can be sorted alphabetically, having already stored their
            ' text values in the tag, along with the tag's original value
            With olistView.ListItems
                If (Index = 1) Then
                    For l = 1 To .count
                        With .Item(l)
                            .Tag = .Text & Chr$(0) & .Tag
                            If IsNumeric(.Text) Then
                                If CDbl(.Text) >= 0 Then
                                    .Text = Format(CDbl(.Text), strFormat)
                                Else
                                    .Text = "&" & InvNumber(Format(0 - CDbl(.Text), strFormat))
                                End If
                            Else
                                .Text = ""
                            End If
                        End With
                    Next l
                Else
                    For l = 1 To .count
                        With .Item(l).ListSubItems(Index - 1)
                            .Tag = .Text & Chr$(0) & .Tag
                            If IsNumeric(.Text) Then
                                If CDbl(.Text) >= 0 Then
                                    .Text = Format(CDbl(.Text), strFormat)
                                Else
                                    .Text = "&" & InvNumber(Format(0 - CDbl(.Text), strFormat))
                                End If
                            Else
                                .Text = ""
                            End If
                        End With
                    Next l
                End If
            End With
            blnRestoreFromTag = True
        Case ldtDateTime
            ' Sort by date.
            strFormat = "YYYYMMDDHhNnSs"
            Dim dte As Date
            ' Loop through the values in this column. Re-format the dates so as they
            ' can be sorted alphabetically, having already stored their visible
            ' values in the tag, along with the tag's original value
            With olistView.ListItems
                If (Index = 1) Then
                    For l = 1 To .count
                        With .Item(l)
                            .Tag = .Text & Chr$(0) & .Tag
                            dte = CDate(.Text)
                            .Text = Format$(dte, strFormat)
                        End With
                    Next l
                Else
                    For l = 1 To .count
                        With .Item(l).ListSubItems(Index - 1)
                            .Tag = .Text & Chr$(0) & .Tag
                            dte = CDate(.Text)
                            .Text = Format$(dte, strFormat)
                        End With
                    Next l
                End If
            End With
            blnRestoreFromTag = True
        End Select
        ' Sort the ListView Alphabetically
        olistView.SortOrder = IIf(Ascending, lvwAscending, lvwDescending)
        olistView.SortKey = Index - 1
        olistView.Sorted = True
        ' Restore the Text Values if required
        If blnRestoreFromTag Then
            ' Restore the previous values to the 'cells' in this column of the list
            ' from the tags, and also restore the tags to their original values
            With olistView.ListItems
                If (Index = 1) Then
                    For l = 1 To .count
                        With .Item(l)
                            i = InStr(.Tag, Chr$(0))
                            .Text = Left$(.Tag, i - 1)
                            .Tag = Mid$(.Tag, i + 1)
                        End With
                    Next l
                Else
                    For l = 1 To .count
                        With .Item(l).ListSubItems(Index - 1)
                            i = InStr(.Tag, Chr$(0))
                            .Text = Left$(.Tag, i - 1)
                            .Tag = Mid$(.Tag, i + 1)
                        End With
                    Next l
                End If
            End With
        End If
        Call UnLocklistView
        Exit Sub
    SortListView_Error:
        ' Unlock the list window so that the OCX can update it
        LockWindowUpdate 0&
        Select Case Err.Number
        Case Else
            MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure SortListView of Module de classe Class_GestionListView"
        End Select
     
    End Sub
     
     
     
    Private Sub LocklistView()
        ' Display the hourglass cursor whilst sorting
        olistView.MousePointer = 11
        ' Prevent the ListView control from updating on screen - this is to hide
        ' the changes being made to the listitems, and also to speed up the sort
        LockWindowUpdate olistView.HWnd
    End Sub
     
    Private Sub UnLocklistView()
        ' Unlock the list window so that the OCX can update it
        LockWindowUpdate 0&
        ' Restore the previous cursor
        olistView.MousePointer = lngCursor
    End Sub


    @+

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Points : 61
    Points
    61
    Par défaut
    Je me pose la question suivante :

    combien d'item peut contenir un listview avant de commencer a etre unitilisable?

    j'ai fais un teste avec une table contenant 1000 enregistrements, cela va plutot vite pour les affichés dans le listview mais quand est il de 100 000 ou plus ?

  15. #15
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Citation Envoyé par __MacGiver__
    Bonjour,

    une autre façon de trier une listview (...)
    Salut, en fait le problème était de savoir comment mettre des icones sur les
    entêtes de colonnes.
    Cela dit, ta proposition a l'air plus intéressante dans l'exploitation de la listview
    car elle fait un tri selon le type de la colonne. Dans l'exemple que j'ai cité le tri
    se fait en alpha même pour le numérique (problème déjà évoqué sur le forum).

    Merci MacGiver

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

Discussions similaires

  1. [VB 2005]fenêtre recherche de fichier style windows
    Par Yanos dans le forum Windows Forms
    Réponses: 10
    Dernier message: 28/07/2009, 11h34
  2. [Forms], style windows
    Par emiscool dans le forum Forms
    Réponses: 1
    Dernier message: 22/02/2007, 14h56
  3. [VB.NET]Style Windows Classique/XP
    Par ludo16s dans le forum Windows Forms
    Réponses: 6
    Dernier message: 07/12/2006, 22h57
  4. Réponses: 4
    Dernier message: 16/10/2006, 12h17
  5. dtree arboressance style windows explorer - Javascript
    Par free_kar dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/10/2006, 21h07

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