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 :

champs vide dans un CListCtrl


Sujet :

MFC

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Par défaut champs vide dans un CListCtrl
    Bonjour à tous,

    J'ai un problème avec un CListCtrl que je remplis grâce à une structure qui contient des CHAR.
    Ma première colonne se remplit correctement, mais toutes les données ne s'affichent pas dans la deuxième colonne (manque les lignes 8, 9, 11 et 12).

    Voici le code :

    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
    18
    19
    20
    21
    22
    23
    24
    25
     
    m_liste.InsertColumn(0,L"Matière première",LVCFMT_LEFT,100);
    m_liste.InsertColumn(1,L"Quantité",LVCFMT_LEFT,100);
     
    for(int j=0;j<gNbLgnAtd;j++)
    {
    //On récupère le nom de la matière première
     
    		LLblMP = (CString)strlistelgnatd[j].LibMP;
     
    		LQuantite = (CString)strlistelgnatd[j].QteLgnAtd;
     
    		_tcscpy(buffer,(LPCTSTR)LQuantite);
     
    		m_liste.InsertItem(LVIF_TEXT|LVIF_STATE, j, LLblMP,(j%2)==0?LVIS_SELECTED : 0, LVIS_SELECTED,0, 0);
     
    		LV_ITEM lvitem;
    		lvitem.mask = LVIF_TEXT;
    		lvitem.iItem=0; //numéro de la ligne
    		lvitem.iSubItem=1; //numéro de la colonne
    		lvitem.pszText=buffer;//texte à y mettre
     
    		m_liste.SetItem(&lvitem);
     
    	}

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Il devrait y avoir quelque chose de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		iIxItem = m_liste.InsertItem(LVIF_TEXT|LVIF_STATE, j, LLblMP,(j%2)==0?LVIS_SELECTED : 0, LVIS_SELECTED,0, 0);
     
    		LV_ITEM lvitem;
    		lvitem.mask = LVIF_TEXT;
    		lvitem.iItem=iIxItem; //numéro de la ligne
    		lvitem.iSubItem=1; //numéro de la colonne
    		lvitem.pszText=buffer;//texte à y mettre

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 10
    Par défaut
    Merci beaucoup pour cette réponse.

    J'ai en fait résolu mon problème avant de la voir en récupérant le code d'une autre application.

    Voici le code si cela peut aider quelqu'un qui aurait le même problème :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
     
    // insertion des colonnes
     
        lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH | LVIF_PARAM;
        lvcolumn.fmt = LVCFMT_LEFT;
        lvcolumn.pszText = L"Matière Première";
        lvcolumn.iSubItem = 0;
        lvcolumn.cx = 160;  
        m_liste.InsertColumn(0, &lvcolumn);
     
     
     
        lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
        lvcolumn.fmt = LVCFMT_LEFT;
        lvcolumn.pszText = L"Qté";
        lvcolumn.iSubItem = 1;
        lvcolumn.cx = 40;
        m_liste.InsertColumn(1, &lvcolumn);   
     
     
        m_liste.DeleteColumn(2);
     
     
    	// insertion des valeurs dans les colonnes
     
        for (int i=0;i < gNbLgnAtd;i++)
     
        { 
     
           for (iSubItem = 0; iSubItem < 2; iSubItem++)
     
           {
     
               lvitem.mask = LVIF_TEXT;
     
               lvitem.iItem = (iSubItem == 0)? index : iActualItem;
     
               lvitem.iSubItem = iSubItem;
     
               lvitem.iImage = NULL;
     
     
     
               switch (iSubItem) 
     
               {
     
               case 0 :
     
                           l_mess = CString(strlistelgnatd[i].LibMP);
     
                           l_mess.TrimRight();
     
                           _tcscpy(buffer,(LPCTSTR)l_mess);
     
                           lvitem.pszText = buffer;
     
                           break;
     
               case 1 :
     
                           l_mess = CString(strlistelgnatd[i].QteLgnAtd);
     
                           l_mess.TrimRight();
     
                           _tcscpy(buffer,(LPCTSTR)l_mess);
     
                           lvitem.pszText = buffer;
     
                           break;           
     
               }
     
     
     
               if (iSubItem == 0)
     
               {
     
                           iActualItem = m_liste.InsertItem(&lvitem);
     
                           m_liste.SetItemData(index, (DWORD)strlistelgnatd[i].IdLgnAtd);
     
                           index++;
     
               }
     
               else
     
                           m_liste.SetItem(&lvitem);           
     
            }
     
     
        }
     
    	UINT flag = LVIS_SELECTED | LVIS_FOCUSED;
     
        m_liste.SetFocus();
     
        m_liste.SetItemState(0, flag, flag);
     
        m_liste.SetFocus();
    Merci encore une fois

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

Discussions similaires

  1. Masquer un champ vide dans un formulaire access
    Par anassyto dans le forum IHM
    Réponses: 2
    Dernier message: 25/06/2013, 16h24
  2. champ vide dans un DBDateTimePicker
    Par gregcat dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/10/2006, 14h27
  3. Test evenement sur champ vide dans une table
    Par eddyG dans le forum Access
    Réponses: 3
    Dernier message: 30/05/2006, 17h02
  4. Total de champs vide dans un formulaire
    Par gretch dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2006, 11h53
  5. champ vide dans BD
    Par MANU_2 dans le forum Bases de données
    Réponses: 4
    Dernier message: 06/10/2005, 11h28

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