cs_ralebole
Messages postés208Date d'inscriptionmardi 29 novembre 2005StatutMembreDernière intervention 5 janvier 2023
-
8 juin 2006 à 22:21
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
10 juin 2006 à 00:19
Comment ranger un listview sur 2 colonnes (col1 et col 2) je m'explique par cette exemple
( la colonne 1 est prioritaire et ensuite la colonne 2)
exemple au debut voila mon listview
noms col1 col2
michel 8 -1
bernard 10 4
pierre 5 6
paul 7 3
jacques 8 6
Apres le rangement je voudrais obtenir ceci
noms col1 col2
bernard 10 4
jacques 8 6
michel 8 -1
paul 7 3
pierre 5 6
Taron31
Messages postés199Date d'inscriptionvendredi 16 avril 2004StatutMembreDernière intervention28 février 2008 8 juin 2006 à 23:25
Utilises LV_COLUMN (ListView_InsertColumn) pour dessiner les colonnes, et LV_ITEM (ListView_InsertItem) pour les Items...
Et moi j'utilise ListView_SetItemText pour afficher dans les autres colonnes...
___________________
MVS - Most Valuable Student ( Microsoft)
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 9 juin 2006 à 00:55
Salut,
Pour trier la listview, il faut lui envoyer un message LVM_SORTITEMS ou
bien LVM_SORTITEMSEX (voir les differences sur msdn).
Ces messages prennent en parametre un pointeur sur une fonction de
comparaison dont le format est prédéfini. Cette fonction est chargée de
comparer 2 items entre eux, et donc c'est dans cette fonction qu'il faut que
tu geres la priorité de la colone 1 sur la colone 2 lors du tris.
cs_ralebole
Messages postés208Date d'inscriptionmardi 29 novembre 2005StatutMembreDernière intervention 5 janvier 20231 9 juin 2006 à 09:04
Merci pour la reponse mais un exemple serait le bienvenue j' avais deja consulter msdn mais cela ne m'explique pas comment faire et j'ai fait une recherche sur le web (LVM_SORTITEMS) dans l'epoir de trouver un exemple mais rien.
Pour l'insertion des items il n'y à pas de probleme mais c'est juste pour le trie
Si quelq'un c'est ou je peut trouvé un exemple ou me donné un exemple ou une explication plus détaillé merci.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 9 juin 2006 à 15:28
Salut,
Il parait que tu veux gérer une petite base de donnée. Dans ce cas je te conseille de créer une base de donnée Access (.mdb) vide qui contient juste les champs sans aucun enregistrement. Dans ton programme, tu accéderas à cette base avec le composant ADO présent dans tous les Windows depuis 98. Avec de simples requetes SQL tu peux faire toutes les opération que tu veux sur la base. Le tri par exemple peut se faire par ordre de priorité sur plusieurs colonnes. C'est le résultat du tri qui sera alors affiché dans la ListView.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 9 juin 2006 à 18:48
Le solution t'as été donnée par aardman. Tout doit être codé dans la fonction de comparaison ayant comme prototype:
int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
Cette fonction doit être indiquée pendant l'envoi du message LVM_SORTITEMS:
SendMessage(hListView,LVM_SORTITEMS,(WPARAM)0,(LPARAM)CompareFunc);
La fonction de comparaison comparera deux items à la fois, lParam1 et lParam2. Elle doit retourner une valeur négative si le premier item doit précéder le second. Une valeur positive dans le cas contraire ou 0 en cas d'égalité. Tu utiliseras le message LVM_GETITEMTEXT pour retrouver les chaines à comparer. Cette fonction est appelée par le système autant de fois que nécessaire suivant le nombre d'item dans la ListView.
Personnellement, je préfère utiliser LVM_SORTITEMSEX car il permet d'ignorer le membre lParam de la structure LVITEM.
Tu peux regarder le code source de aardman:
http://www.cppfrance.com/codes/EDONKEY-SEARCHER-SOCKET-WIN32_27536.aspx Examine le fichier "interface.cpp"
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 10 juin 2006 à 00:19
C'est vrai vecchio56. Je n'avais pas vu ce code source. Je pense que notre ami ralebole a maintenant suffisament d'éléments de base pour résoudre son problème. Après avoir bien compris le fonctionnement de cette fonction de tri, il n'aura qu'à l'améliorer pour gérer la priorité des colonnes.