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
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
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.
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
pas vraiment ,ça nous dit pas ce que tu veux faire de ce tableau ...
![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
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());
Salut, ok je vais essayer encore...
j'ai ma classe CPersonne:
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
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; };
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:
Je veux mettre mon tableau dans mon ListBox.
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 }
Merci...
Thom
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());
Ok j'ai compris, j'avais déjà une fonction GetNom, je comprend la logique.. mais je doute dupcq 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 malistbox.AddString(MonTableauDePersonnes[i].GetName());Jsuis un peu conffu..
Code : Sélectionner tout - Visualiser dans une fenêtre à part error C2228: left of '.GetNom' must have class/struct/union type
merci
Thom
Comment est déclaré ton tableau "m_oaPersonnes"?
Mon tableau m_oaPersonnes est déclarer dans mon Doc comme ceci:Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2public: CObArray m_oaPersonnes;
Thom
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![]()
Essaye :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CPersonne* pPersonne = (CPersonne*)MonTableauDePersonnes[i]; maListBox.AddString(pPersonne->GetName());
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
A tout hasard: essaie de remplacer m_oaPersonnes[i] par m_oaPersonnes.GetAt(i)
Hihi je tadore r0d
Ca fonctionne, il me suffit de cossé sur ma boucle...
Merci!!!
Thom
Salut jai prit un peu de ton code merci aussi lol!
j'lai un peu modifier et j'lai fait fiter dans ma fonction OnInitDialog
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()); }
Merci ciao :p
Partager