Bonjour =E0 toutes et =E0 tous,
Je d=E9sire faire le tri d'une listview suivant une colonne=20
de la liste. Pour cela, j'utilise la m=E9thode suivante=20
2- dans l'=E9v=E9nement click de la colonne j'utilise le code=20
suivant pour r=E9aliser un tri suivant le type de la colonne
Private Sub lswList_ColumnClick(ByVal ColumnHeader As=20
MSComctlLib.ColumnHeader)
'D=E9claration
' Active la routine de gestion d'erreur
On Error GoTo GestionError
'toggle the sort order for use in the CompareXX routines
sOrder =3D Not sOrder
lswList.SortKey =3D ColumnHeader.Index - 1
Select Case ColumnHeader.Index - 1
Case 2, 4, 5:
'Use sort routine to sort by value
lswList.Sorted =3D False
SendMessage lswList.hwnd, _
LVM_SORTITEMS, _
lswList.hwnd, _
ByVal FARPROC(AddressOf=20
CompareValues)
Case 6:
'Use sort routine to sort by date
lswList.Sorted =3D False
SendMessage lswList.hwnd, _
LVM_SORTITEMS, _
lswList.hwnd, _
ByVal FARPROC(AddressOf=20
CompareDates)
Case Else:
'Use default sorting to sort the items in=20
the list
lswList.SortKey =3D 0
lswList.SortOrder =3D Abs(sOrder)
lswList.Sorted =3D True
End Select '
=20
Exit Sub
' Routine de gestion d'erreur
GestionError:
'Trace
gtyp_TRACE_APPLIC.num_error =3D Err.Number
gtyp_TRACE_APPLIC.lib_trace =3D Err.Description
gtyp_TRACE_APPLIC.niv_trace =3D enm_TRACE.Erreur_
gtyp_TRACE_APPLIC.contexte =3D "lswList_ColumnClick"
Call f_Trace
End Sub
Mais le tri ce fait uniquement sur la premi=E8re colonne.
de la liste quel que soit la colonne ou l'on click
Que faut-il faire pour d=E9finir la colonne sur laquelle on=20
d=E9sire faire le tri?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Bonjour/soir,
Tu as probablement une erreur dans la routine de tri.
Un même problème était survenu. Il y avait une procédure de récupération de texte dans laquelle une structure demandait un index de subitem qui était définie à 1.
"Saint Gral" a écrit dans le message de news:072001c35a87$2502c850$
Bonjour à toutes et à tous, Je désire faire le tri d'une listview suivant une colonne de la liste. Pour cela, j'utilise la méthode suivante
1- dans l'événement load de la formload je définis les colonnes Call lswList.ColumnHeaders.Clear Call lswList.ColumnHeaders.Add(, "ID_REC", "Code PI", 1500) Call lswList.ColumnHeaders.Add(, "VERS_REC", "Version ", 1400, lvwColumnRight) Call lswList.ColumnHeaders.Add(, "LIB_REC", "Libellé", 4000) Call lswList.ColumnHeaders.Add(, "LIB_ETAT_REC", "Etat", 3000) Call lswList.ColumnHeaders.Add(, "GRAMMAGE", "Grammage (g)", 1000, lvwColumnRight) lswList.HideColumnHeaders = False
2- dans l'événement click de la colonne j'utilise le code suivant pour réaliser un tri suivant le type de la colonne
Private Sub lswList_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) 'Déclaration
' Active la routine de gestion d'erreur On Error GoTo GestionError
'toggle the sort order for use in the CompareXX routines sOrder = Not sOrder
lswList.SortKey = ColumnHeader.Index - 1
Select Case ColumnHeader.Index - 1 Case 2, 4, 5: 'Use sort routine to sort by value lswList.Sorted = False SendMessage lswList.hwnd, _ LVM_SORTITEMS, _ lswList.hwnd, _ ByVal FARPROC(AddressOf CompareValues)
Case 6: 'Use sort routine to sort by date lswList.Sorted = False SendMessage lswList.hwnd, _ LVM_SORTITEMS, _ lswList.hwnd, _ ByVal FARPROC(AddressOf CompareDates) Case Else: 'Use default sorting to sort the items in the list lswList.SortKey = 0 lswList.SortOrder = Abs(sOrder) lswList.Sorted = True
End Select '
Exit Sub
' Routine de gestion d'erreur GestionError: 'Trace gtyp_TRACE_APPLIC.num_error = Err.Number gtyp_TRACE_APPLIC.lib_trace = Err.Description gtyp_TRACE_APPLIC.niv_trace = enm_TRACE.Erreur_ gtyp_TRACE_APPLIC.contexte = "lswList_ColumnClick" Call f_Trace End Sub
Mais le tri ce fait uniquement sur la première colonne. de la liste quel que soit la colonne ou l'on click
Que faut-il faire pour définir la colonne sur laquelle on désire faire le tri?
Merci par avance
Saint Gral
Bonjour/soir,
Tu as probablement une erreur dans la routine de tri.
Un même problème était survenu.
Il y avait une procédure de récupération de texte dans laquelle une
structure demandait un index de subitem qui était définie à 1.
"Saint Gral" <l.granger@courbon.fr> a écrit dans le message de
news:072001c35a87$2502c850$a101280a@phx.gbl
Bonjour à toutes et à tous,
Je désire faire le tri d'une listview suivant une colonne
de la liste. Pour cela, j'utilise la méthode suivante
1- dans l'événement load de la formload je définis les
colonnes
Call lswList.ColumnHeaders.Clear
Call lswList.ColumnHeaders.Add(, "ID_REC", "Code PI", 1500)
Call lswList.ColumnHeaders.Add(, "VERS_REC", "Version ",
1400, lvwColumnRight)
Call lswList.ColumnHeaders.Add(, "LIB_REC", "Libellé",
4000)
Call lswList.ColumnHeaders.Add(, "LIB_ETAT_REC", "Etat",
3000)
Call lswList.ColumnHeaders.Add(, "GRAMMAGE", "Grammage
(g)", 1000, lvwColumnRight)
lswList.HideColumnHeaders = False
2- dans l'événement click de la colonne j'utilise le code
suivant pour réaliser un tri suivant le type de la colonne
Private Sub lswList_ColumnClick(ByVal ColumnHeader As
MSComctlLib.ColumnHeader)
'Déclaration
' Active la routine de gestion d'erreur
On Error GoTo GestionError
'toggle the sort order for use in the CompareXX routines
sOrder = Not sOrder
lswList.SortKey = ColumnHeader.Index - 1
Select Case ColumnHeader.Index - 1
Case 2, 4, 5:
'Use sort routine to sort by value
lswList.Sorted = False
SendMessage lswList.hwnd, _
LVM_SORTITEMS, _
lswList.hwnd, _
ByVal FARPROC(AddressOf
CompareValues)
Case 6:
'Use sort routine to sort by date
lswList.Sorted = False
SendMessage lswList.hwnd, _
LVM_SORTITEMS, _
lswList.hwnd, _
ByVal FARPROC(AddressOf
CompareDates)
Case Else:
'Use default sorting to sort the items in
the list
lswList.SortKey = 0
lswList.SortOrder = Abs(sOrder)
lswList.Sorted = True
End Select '
Exit Sub
' Routine de gestion d'erreur
GestionError:
'Trace
gtyp_TRACE_APPLIC.num_error = Err.Number
gtyp_TRACE_APPLIC.lib_trace = Err.Description
gtyp_TRACE_APPLIC.niv_trace = enm_TRACE.Erreur_
gtyp_TRACE_APPLIC.contexte = "lswList_ColumnClick"
Call f_Trace
End Sub
Mais le tri ce fait uniquement sur la première colonne.
de la liste quel que soit la colonne ou l'on click
Que faut-il faire pour définir la colonne sur laquelle on
désire faire le tri?
Tu as probablement une erreur dans la routine de tri.
Un même problème était survenu. Il y avait une procédure de récupération de texte dans laquelle une structure demandait un index de subitem qui était définie à 1.
"Saint Gral" a écrit dans le message de news:072001c35a87$2502c850$
Bonjour à toutes et à tous, Je désire faire le tri d'une listview suivant une colonne de la liste. Pour cela, j'utilise la méthode suivante
1- dans l'événement load de la formload je définis les colonnes Call lswList.ColumnHeaders.Clear Call lswList.ColumnHeaders.Add(, "ID_REC", "Code PI", 1500) Call lswList.ColumnHeaders.Add(, "VERS_REC", "Version ", 1400, lvwColumnRight) Call lswList.ColumnHeaders.Add(, "LIB_REC", "Libellé", 4000) Call lswList.ColumnHeaders.Add(, "LIB_ETAT_REC", "Etat", 3000) Call lswList.ColumnHeaders.Add(, "GRAMMAGE", "Grammage (g)", 1000, lvwColumnRight) lswList.HideColumnHeaders = False
2- dans l'événement click de la colonne j'utilise le code suivant pour réaliser un tri suivant le type de la colonne
Private Sub lswList_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) 'Déclaration
' Active la routine de gestion d'erreur On Error GoTo GestionError
'toggle the sort order for use in the CompareXX routines sOrder = Not sOrder
lswList.SortKey = ColumnHeader.Index - 1
Select Case ColumnHeader.Index - 1 Case 2, 4, 5: 'Use sort routine to sort by value lswList.Sorted = False SendMessage lswList.hwnd, _ LVM_SORTITEMS, _ lswList.hwnd, _ ByVal FARPROC(AddressOf CompareValues)
Case 6: 'Use sort routine to sort by date lswList.Sorted = False SendMessage lswList.hwnd, _ LVM_SORTITEMS, _ lswList.hwnd, _ ByVal FARPROC(AddressOf CompareDates) Case Else: 'Use default sorting to sort the items in the list lswList.SortKey = 0 lswList.SortOrder = Abs(sOrder) lswList.Sorted = True
End Select '
Exit Sub
' Routine de gestion d'erreur GestionError: 'Trace gtyp_TRACE_APPLIC.num_error = Err.Number gtyp_TRACE_APPLIC.lib_trace = Err.Description gtyp_TRACE_APPLIC.niv_trace = enm_TRACE.Erreur_ gtyp_TRACE_APPLIC.contexte = "lswList_ColumnClick" Call f_Trace End Sub
Mais le tri ce fait uniquement sur la première colonne. de la liste quel que soit la colonne ou l'on click
Que faut-il faire pour définir la colonne sur laquelle on désire faire le tri?