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 :

[VisualC++6.0]Object Array dans un ListBox


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut [VisualC++6.0]Object Array dans un ListBox
    Salut!
    Comment faire pour mettre un ObjectArray dans un ListBox?

    car m_ListNom.AddString(m_oaPersonnes); ne peut fonctionner car c'est en string, il y a t'il une manière?
    Merci
    Thom

  2. #2
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Qu'appelles-tu ObjectArray?
    Quoi qu'il en soit, la fonction AddString, comme son nom l'indique et comme tu l'as noté, prends un CString en paramètre. Et non un tableau, quel qu'il soit. AddString n'ajoute qu'un élément, si tu veux entrer un tableau dans ta ListBox, il va te falloir une boucle.

    Hope it helps.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut, j'appelle ObjectArray comme étant un tableau... J'ai une classe CPersonne dérivé de CObject et j'ai un m_oaPersonnes qui est un tableau où je met mes "enregistrements".

    Est-ce plus clair
    Merci..
    Thom

  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
    pas vraiment ,ça nous dit pas ce que tu veux faire de ce tableau ...

  5. #5
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Je ne sais pas trop pourquoi ton CPersonne hérite de CObject mais soit... (hmm, à tout hasard, tu ne programmais pas en java avant? )
    Tu ne donne pas beaucoup de précisions, mais je vais prendre un exemple: imaginons que tu souhaites mettre les noms des personnes dans ta listbox. Et bien il va te falloir implémenter un méthode CString CPersone::GetName(); qui renvoie le nom de la personne. Puis, pour mette ce nom dans ton listbox, tu n'aura plus qu'à faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    malistbox.AddString(MonTableauDePersonnes[i].GetName());

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut, ok je vais essayer encore...

    j'ai ma classe CPersonne:
    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
     
    class CPersonne : public CObject  
    {
        DECLARE_SERIAL(CPersonne)
    public:
        CPersonne();
        void SetAge(int age) { m_iAge = age;}
        void SetEmploye(BOOL employe) { m_bEmploye = employe;}
        void SetNom(CString nom) { m_csNom = nom;}
        void SetSexe(int sexe) { m_iSexe = sexe;}
        void SetSituation(int situation) { m_iSituation = situation;}
        int GetAge() { return m_iAge;}
        BOOL GetEmploye() { return m_bEmploye;}
        CString GetNom() { return m_csNom;}
        int GetSituation() { return m_iSituation;}
        int GetSexe() { return m_iSexe;}
        virtual void Serialize(CArchive &ar);
        virtual ~CPersonne();
    private:
        CString m_csNom;
        int m_iAge;
        int m_iSituation;
        BOOL m_bEmploye;
        int m_iSexe;
    };
    Et je voudrais que seulement le nom apparaisse dans un ListBox... Mon ListBox va chercher tout ce qui était enregistrer dans mon m_oaPersonnes qui est dans ma classe Document

    Ensuite j'ai un Dialog qui contient mon ListBox et je veux simplement que dans celui-ci que mes données(nom) s'y retrouve.
    OnInitDialog:
    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
     
    BOOL CListeEmp::OnInitDialog() 
    {
        CDialog::OnInitDialog();
     
        // TODO: Add extra initialization here
        UpdateData(TRUE);
    //    CString CPersone::GetNom();
        m_pDoc = static_cast<CBottinDoc *>(static_cast<CFrameWnd *>(AfxGetMainWnd())->GetActiveDocument());
        for( int i=0;m_pDoc->m_oaPersonnes.GetSize();i++)
            m_ListNom.AddString(m_pDoc->m_oaPersonnes);
        UpdateData(FALSE);
     
        return TRUE;  // return TRUE unless you set the focus to a control
                      // EXCEPTION: OCX Property Pages should return FALSE
    }
    Je veux mettre mon tableau dans mon ListBox.

    Merci...
    Thom

  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Oki, et bien il me semble que je t'ai donné la réponse. A peu de chose près... je te laisse chercher un peu?

    for( int i=0;m_pDoc->m_oaPersonnes.GetSize();i++)
    m_ListNom.AddString(m_pDoc->m_oaPersonnes[i].GetNom());

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Ok j'ai compris, j'avais déjà une fonction GetNom, je comprend la logique.. mais je doute du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    malistbox.AddString(MonTableauDePersonnes[i].GetName());
    pcq comme tu disais et je disais j'ai un ObjectArray et je peux mettre encore AddString? et ensuite m_oaPersonnes[i].GetNom() il me dit que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C2228: left of '.GetNom' must have class/struct/union type
    Jsuis un peu conffu..
    merci
    Thom

  9. #9
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Comment est déclaré ton tableau "m_oaPersonnes"?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Mon tableau m_oaPersonnes est déclarer dans mon Doc comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public:
        CObArray m_oaPersonnes;
    Merci
    Thom

  11. #11
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    mmhpff.. je ne connais pas cette classe: CObArray ^^
    Visiblement, elle ne comporte pas d'opérateur [], il va donc te falloir utiliser GetAt (cf. http://msdn2.microsoft.com/en-us/library/5dfbaz26(VS.80).aspx )
    Désolé, là je ne peux pas vraiment t'en dire plus

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CPersonne* pPersonne = (CPersonne*)MonTableauDePersonnes[i];
    maListBox.AddString(pPersonne->GetName());

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    puisque mon m_oaPersonnes est dans le Doc je devrais faire plutot

    for(i=0;i< m_pDoc->m_oaPersonnes.GetSize();i++) // Pas sure pour la boucle...
    CBottinDoc* pPersonne = (CBottinDoc
    *)m_oaPersonnes[i];
    m_ListNom.AddString(pPersonne->GetNom()); euh mais ca fonctionne pas...

    Merci
    Thom

  14. #14
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    A tout hasard: essaie de remplacer m_oaPersonnes[i] par m_oaPersonnes.GetAt(i)

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Hihi je tadore r0d

    Ca fonctionne, il me suffit de cossé sur ma boucle...
    Merci!!!
    Thom

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 15
    Par défaut
    Comment ajoutes-tu un élément à m_oaPersonnes ?

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut jai prit un peu de ton code merci aussi lol!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for( int i=0;i < m_pDoc->m_oaPersonnes.GetSize();i++)
        {
        CPersonne* pPersonne = (CPersonne*)m_pDoc->m_oaPersonnes.GetAt(i);
            m_ListNom.AddString(pPersonne->GetNom());
        }
    j'lai un peu modifier et j'lai fait fiter dans ma fonction OnInitDialog

    Merci ciao :p

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

Discussions similaires

  1. recherche dans une listbox
    Par micknic dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/02/2005, 21h39
  2. Clique droit dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/02/2005, 22h50
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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