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 :

Surligner une partie d'une ligne dans un CListCtrl


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Surligner une partie d'une ligne dans un CListCtrl
    Bonjour,

    Je maintiens une application qui fait des comparaisons entre plusieurs fichiers texte.
    Les resultats sont presentes sous forme de liste via CListCtrl.
    Je voudrais surligner (ou mettre en gras ou changer la couleur, ... ) dans chaque ligne la partie qui est differente.
    Exemple:
    Fichier 1 : un deux trois quatre cinq
    Fichier 2 : un deux trois four cinq
    resultat recherché :
    colonne du fichier 1 | colonne du fichier 2
    un deux trois quatre cinq | un deux trois four cinq

    Dans cet exemple j'ai choisi de montrer les differences par la mise en gras. Mais je prefererai surligner.

    Cadre du developpement : WXPSP2/VS6.0/VC++/MFC

    Merci.
    A+ David.

  2. #2
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Qu'est ce qui te pose problème? Le fait de trouver la différence? Ou bien de la mettre en valeur ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Je ne suis pas très bon dans ce domaine mais je ferais comme çà :

    1- Nouvelle ListCtrlPerso que tu dérive de CListCtrl. Tu lui ajoutes une donnée liée à chaque élément de ta listctrl. Ajout des Get et Set qui vont bien (style un set pour mettre en surligné l'élément que tu veux).

    2- Dans ton code qui fait la différence entre tes 2 fichiers tu positionnes avec tes Getteurs les propriété de ta ListCtrlPerso.

    3- Losque ta ListCtrl se redessine tu utilise le NM_CUSTOMDRAW pour redessiner ce qui t'intéresse.

    Pour une mise en gras c'est ce que je fais actuellement et çà marche. Je ne sais pas si c'est la meilleur méthode par contre. Pour la couleur çà marche aussi, le surlignement je ne sais pas !

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    @Poukill : La difference je l'ai mais je veux la mettre en evidence soit en surlignant ou en mettant en gras ou en changeant la couleur. Merci.

    @hummm : Je ne saisis pas toute ton explication. Il faudrait associer une donnee à chaque element de ma liste? Je ne connais pas à l'avance le nombre de differences et de plus il peut y avoir jusqu'a plusieurs centaines de lignes de differences, ca me parait pas tres adapté. De plus je n'ai pas de NM_CUSTOMDRAW sur CListCtrl peut etre faut il cocher un element dans les proprietes de ma liste ? Peux tu me fournir ton exemple ? Merci

    J'ajoute que ma liste est du type Report dans les proprietes.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Il me semble qu'ajouter un element à chaque item est assez fréquent dans ce genre de situation :
    avec CListCtrl::GetItemData(item) et CListCtrl::SetItemData()

    Pour le dessin personnalisé, c'est juste des pistes mais chez moi çà fonctionne :
    ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnNMCustomdraw)
    et
    void CListCtrlPerso::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
    {
    LPNMLVCUSTOMDRAW lpLVCustomDraw = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);
    switch(lpLVCustomDraw->nmcd.dwDrawStage)
    {
    ...
    if (pListCtrlData->bUnread)
    {
    stdlogfont.lfWeight = FW_BOLD;
    }
    ...
    }
    ...
    }

    Si çà peut t'aider !

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    tu as un exemple dans la faq de personnalisation d'affichage d'une CListCtrl.
    http://cpp.developpez.com/faq/vc/ind...tCtrlOwnerDraw

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/06/2015, 15h21
  2. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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