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 :

VS 6 + MFC -CListCtrl-Surlignage ligne


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 94
    Par défaut VS 6 + MFC -CListCtrl-Surlignage ligne
    Bonjour,
    Je veux sélectionner une ligne entière par programme dans un ListCtrl
    La sélection manuelle fonctionne bien .
    La fonction .. EnsureVisible(....) fonctionne bien mais pas de surlignage de la ligne.
    Ci joint extraits de code qui pourraient être en cause:
    Pouvez-vous me donner la solution?
    A l'avance merci.


    Dans InitDialog:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // mode report.edit ,
        m_ListPoints.ModifyStyle(0,LVS_REPORT | LVS_EDITLABELS );
    //Select ligne entière
       m_ListPoints.SetExtendedStyle(m_ListPoints.GetExtendedStyle() | LVS_EX_FULLROWSELECT);


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    void COutilsDAT::SelectionnerItem(int NumPOINT)
    {
     m_ListPoints.SetItemState(NumPOINT, LVIS_SELECTED, LVIS_SELECTED); 
     m_ListPoints.EnsureVisible(NumPOINT, FALSE); 
    }
     
    void COutilsDAT::TrouverEtSelectionnerLaLigne()
    {
    	int numPOINT;
    	int X=XYPointCourbeSelectionne.x;
    	int Y=XYPointCourbeSelectionne.y;
    	DeselectionnerTout();
    	numPOINT=TouverItemListe(X,Y);
    	if (numPOINT!=-1)
    		SelectionnerItem(numPOINT);
    }

  2. #2
    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
    Par défaut
    salut,
    je dirais comme ça que ta méthode TouverItemListe ne donne pas le bonne indice .
    un petit tour en mode trace debug devrait permettre de statuer.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 94
    Par défaut
    Merci pour ta réponse rapide mais l'item doit être bon , (tracé en mode DEBUG sa valeur paraît correcte..) d'ailleurs la fonction ..EnsureVisible(..) déplace bien les lignes de la liste de façon à ce que l'item en question soit bien affiché...

  4. #4
    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
    Par défaut
    inverse l'ordre de tes deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     m_ListPoints.SetItemState(NumPOINT, LVIS_SELECTED, LVIS_SELECTED); 
     m_ListPoints.EnsureVisible(NumPOINT, FALSE);

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 94
    Par défaut
    J'avais essayé et je viens de le refaire.
    En inversant l'ordre même résultat: l'item est bien affiché en tête de la zone de liste par .. EnsureVisible(..) mais la ligne ne paraît pas en surbrillance.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 94
    Par défaut
    Puisque la sélection marche en mode manuel est-ce qu'il y a un moyen d'envoyer un message simulant un LBUTTONDOWN sur cet item ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/07/2006, 08h51
  2. Réponses: 13
    Dernier message: 12/07/2005, 10h14
  3. [MFC] surbrillance de ligne dans une CListCtrl
    Par Yoshette dans le forum MFC
    Réponses: 4
    Dernier message: 15/04/2005, 16h09
  4. [MFC] Retour à la ligne dans un CEdit
    Par Kant dans le forum MFC
    Réponses: 7
    Dernier message: 18/02/2004, 08h58
  5. Réponses: 3
    Dernier message: 18/11/2003, 13h22

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