Une petite source qui montre comment trier efficacement (et facilement)
les colonnes de vos ListView.
Une seule ligne a ajouter pour qu'enfin vous puissiez trier les colonnes de numériques, de dates... ou appliquer un tri personnalisé (nécessite que vous modifiez le code du module)
Certains me diront que la propriété Sorted est là pour ça...
oui, sauf que celle-ci effectue un tri par ordre alphabétique:
(0 <1 <10 <11 <2 <20 ...)
Encore une API mise a portée de VB. On demande simplement a effectuer le tri des elements. Windows appelle ensuite notre fonction de tri perso, en nous indiquant une paire d'elements a tester.
tout ce que nous avons a faire, c'est renvoyer :
-1 => premier element a placer avant le deuxieme
0 => elements identiques
1 => second element a placer avant le premier
Source / Exemple :
Private Sub HandleColumnClick(ByRef voListView As ListView, ByRef voColumnHeader As ColumnHeader, Optional voImageList As ImageList)
Dim oColumn As ColumnHeader
If Not Nothing Is voListView And Not Nothing Is voColumnHeader Then
With voListView
'# A-t'on cliqué sur la colonne sur laquelle le tri est déjà effectué ?
If .SortKey = voColumnHeader.Index - 1 Then
'# en ce cas... on inverse le tri
.SortOrder = 1 - .SortOrder
Else
'# tri croissant sur la colonne cliquée
.SortKey = voColumnHeader.Index - 1
.SortOrder = lvwAscending
End If
Set .ColumnHeaderIcons = voImageList
'# Si la liste est renseignée, on met a jour les icones
If Not Nothing Is voImageList Then
For Each oColumn In .ColumnHeaders
If oColumn Is voColumnHeader Then
'# les icones sont stockées ainsi dans l'imagelist:
'# 1=> ASC ; 2=>DESC
oColumn.Icon = .SortOrder + 1
Else
'# on supprime l'icone
oColumn.Icon = 0
End If
Next oColumn
End If
End With
End If
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.