[R] Trier une listview à plusieurs colonnes
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Trier une listview à plusieurs colonnes
Bonjour,
J'ai créé une listview à 5 colonnes et j'aimerais pouvoir y ajouter des items et les trier en cliquant sur l'en-tête d'une colonne. Existe-t-il une méthode simple ?
Je précise que les items de chaque ligne sont corrélées et que j'utilise le mode Opt("GUIOnEventMode", 1)
Merci.
Cordialement,
J'ai créé une listview à 5 colonnes et j'aimerais pouvoir y ajouter des items et les trier en cliquant sur l'en-tête d'une colonne. Existe-t-il une méthode simple ?
Je précise que les items de chaque ligne sont corrélées et que j'utilise le mode Opt("GUIOnEventMode", 1)
Merci.
Cordialement,
Modifié en dernier par val25 le lun. 08 juin 2009 09:54, modifié 1 fois.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Trier une listview à plusieurs colonnes
Cette question à déjà été posée il y à quelque temps et il semblerait qu'il n'y ait pas de solution 'simple' (a ma connaissance).
Cela dit, un petit tour vers le forum Anglais pourait peut être vous apporter une solution.
Cela dit, un petit tour vers le forum Anglais pourait peut être vous apporter une solution.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Trier une listview à plusieurs colonnes
Dommage !
Je vais donc essayer de creuser la question (peut-être que ça servira à d'autre).
1ère SOLUTION :
J'ai d'abord essayé d'utiliser le style $LVS_SORTASCENDING de la listview.
Exemple de code qui illustre l'utilisation de $LVS_SORTASCENDING :
Résultat :
Lorsqu'on ajoute des items dans la 1ère colonne en même temps que des subitems dans la 2ème, la première colonne est bien triée par ordre alpha au fur et mesure du remplissage.
Problème : Les subitems de la 2ème sont incohérents voire inexistants.
D'autre part, le tri ne peut se faire que lors du remplissage.
Du coup, l'utilisateur ne peut pas cliquer sur l'en-tête d'une colonne pour trier le tableau.
2ème SOLUTION :
Laisser tomber $LVS_SORTASCENDING et utiliser d'autres méthodes comme :
_GUICtrlListView_SortItems
_GUICtrlListView_RegisterSortCallBack
Voici ce que ça pourrait donner à partir de l'exemple précédent :
Résultats :
Lorsque je clique sur les en-tête de colonne, rien ne se passe.
Pourriez-vous éclairer ma lanterne sur ce qui cloche ?
Merci
Je vais donc essayer de creuser la question (peut-être que ça servira à d'autre).
1ère SOLUTION :
J'ai d'abord essayé d'utiliser le style $LVS_SORTASCENDING de la listview.
Exemple de code qui illustre l'utilisation de $LVS_SORTASCENDING :
► Afficher le texte
Lorsqu'on ajoute des items dans la 1ère colonne en même temps que des subitems dans la 2ème, la première colonne est bien triée par ordre alpha au fur et mesure du remplissage.
Problème : Les subitems de la 2ème sont incohérents voire inexistants.
D'autre part, le tri ne peut se faire que lors du remplissage.
Du coup, l'utilisateur ne peut pas cliquer sur l'en-tête d'une colonne pour trier le tableau.
2ème SOLUTION :
Laisser tomber $LVS_SORTASCENDING et utiliser d'autres méthodes comme :
_GUICtrlListView_SortItems
_GUICtrlListView_RegisterSortCallBack
Voici ce que ça pourrait donner à partir de l'exemple précédent :
► Afficher le texte
Lorsque je clique sur les en-tête de colonne, rien ne se passe.
Pourriez-vous éclairer ma lanterne sur ce qui cloche ?
Merci
Re: [..] Trier une listview à plusieurs colonnes
J'ai aussi essayé de m'inspirer des exemples de l'aide, mais ça ne marche pas et j'avoue que je ne comprends pas tout bien à ce script (_WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam) ?)
► Afficher le texte
- orax
- Modérateur
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Trier une listview à plusieurs colonnes
Il y a une erreur à la ligne 43, visiblement il manque un argument. Remplacez :
Local $iIndex = _GUICtrlListView_AddItem($hWnd, $aItem[1], _GUICtrlListView_GetItemCount($hWnd) + 9999)
par
Local $iIndex = _GUICtrlListView_AddItem($hWnd, $aItem[1], -1, _GUICtrlListView_GetItemCount($hWnd) + 9999)
Local $iIndex = _GUICtrlListView_AddItem($hWnd, $aItem[1], _GUICtrlListView_GetItemCount($hWnd) + 9999)
par
Local $iIndex = _GUICtrlListView_AddItem($hWnd, $aItem[1], -1, _GUICtrlListView_GetItemCount($hWnd) + 9999)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Trier une listview à plusieurs colonnes
Essayez comme ceci : http://www.autoitscript.com/forum/index ... t&p=675233
Je viens de tester le code, et il fonctionne.
D'après ce que j'ai vu, il ne vous sera pas difficile de l'adapter à votre script.
Je viens de tester le code, et il fonctionne.
D'après ce que j'ai vu, il ne vous sera pas difficile de l'adapter à votre script.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Trier une listview à plusieurs colonnes
Orax a raison, il manquait effectivement un paramètre à la ligne 43 !
Et du coup le tri fonctionne impécablement !
C'est super.
Merci
Et du coup le tri fonctionne impécablement !
C'est super.
Merci
Re: [..] Trier une listview à plusieurs colonnes
Voici le code qui fonctionne avec le mode GUIOnEventMode
► Afficher le texte
Re: [R] Trier une listview à plusieurs colonnes
Bonjour, en reprenant le code de Val25,
Je voudrais trier une listview à 4 colonnes.
Il semble que la fonction _WM_NOTIFY ne soit jamais appelée.
voici un exemple de fichier _liste_stations.csv
Si quelqu'un peut éclairer ma lanterne
merci
Je voudrais trier une listview à 4 colonnes.
► Afficher le texte
voici un exemple de fichier _liste_stations.csv
► Afficher le texte
merci
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [R] Trier une listview à plusieurs colonnes
Code : Tout sélectionner
[color=#FF0000]$hWndListView = $Lst_Stations[/color]
If Not IsHWnd($Lst_Stations) Then [color=#FF0000]$hWndListView = GUICtrlGetHandle($Lst_Stations)[/color]
;....
Switch $hWndFrom
[color=#FF0000]Case $Lst_Stations [/color] ; non !
Case $hWndListView ; oui !
Switch $iCode
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [R] Trier une listview à plusieurs colonnes
Bonjour,
Merci Mikell pour ta réponse.
En fait, Val25 a vu qu'il manquait des #include.
le code devient donc:
Et youpi ça marche, on peut trier sur n'importe quelle colonne
Merci Mikell pour ta réponse.
En fait, Val25 a vu qu'il manquait des #include.
Code : Tout sélectionner
#include <WindowsConstants.au3>
► Afficher le texte