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

MFC Discussion :

[MFC] Classer une liste a plusieur colonne


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Points : 55
    Points
    55
    Par défaut [MFC] Classer une liste a plusieur colonne
    Bonjour,

    Je voudrais calsser une liste à plusieur colonne par orde alphabétique.

    Le probleme est que la fonction de clik dans le header n'est jamais applée, comment faire pour l'activé.

    Puis, quel est la solution la plus simple pour demander un classement de la liste.

    Merci,

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Bonjour,

    On peut avoir un CListCtrl classé par ordre alphabétique (ou inversé) en modifiant la propriété 'Sort'. Ainsi le classement se fait automatiquement lorsqu'on insère des items.

    Par contre si on veut activer le tri par la pression du header d'une colonne, il faut alors implémenter soi-même le comportement en interceptant le message LVN_COLUMNCLICK.

    un exemple d'implémentation trouvé sur codeguru.



    Enjoy yourself !

  3. #3
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Le clic/double clic sur le header est problématique : la gestion de la réflection du message implémentée par ClassWizard ne fonctionne pas. La raison : le header est une sous-fenêtre dont l'ID est différent de celui de la liste.

    Ci-dessous 2 liens qui donnent des pistes pour pallier à ce problème. Ca ne fonctionne pas dans tous les cas. J'ai fait quelques tests : c'est OK pour le clic, mais le double-clic nada .

    http://www.experts-exchange.com/Prog..._20094826.html
    http://www.codeguru.com/Cpp/controls...icle.php/c1033

    Dans le handler de l'événement il convient ensuite d'appeler CListCtrl::SortItems(), en lui passant en paramètre la fonction de comparaison.
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Avec le message LVN_COLUMNCLICK, on est bien avertit du clik dans le header.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Si j'utilise l'exemple du MSDN avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
    Le parametre lParam1 et lParam2 ne s'incrémente pas.
    Quelqu'un sait'il pourquoi?

    MSDN exemple :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemfc/htm/clistctr_68.asp

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Je t'ai donné le lien, l'as-tu lu jusque la fin ?

    In the compare function, i receive always lparam1 and lparam2 as 0 value!



    Enjoy yourself !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Ok mais le programme qu tu me propose ne fonctionne pas à cause de : -&gt

    Je ne comprend pas cette ligne ou il y a une erreur!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_listAccts.SortItems( AcctsCompare, pNMListView->iSubItem);

  8. #8
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    LOL, j'avais pas fait attention à ça.

    C'est de l'HTML qui n'a pas été interprété. ">" en HTML correspond à ">".
    donc tous les "->" doivent être remplacés par des "->". Et là on comprend beaucoup mieux le code.

    Voili voilou



    Enjoy yourself !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 92
    Points : 55
    Points
    55
    Par défaut
    Désolé mais chez moi toujours pas d'incrémentation, l'exemple ne fonctionne pas!!

Discussions similaires

  1. [SP-2010] Webpart de requêtes dans une liste sur plusieurs colonnes (dates)
    Par Eka_T dans le forum SharePoint
    Réponses: 6
    Dernier message: 09/02/2015, 15h03
  2. Réponses: 6
    Dernier message: 23/11/2012, 23h26
  3. [AC-2007] Afficher une liste sur plusieurs colonnes
    Par Nephyline dans le forum IHM
    Réponses: 5
    Dernier message: 08/02/2012, 15h03
  4. [ul/li] Séparer une liste sur plusieurs colonnes
    Par Wookai dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 22/06/2007, 14h01
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

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