Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1385 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Acceder aux champs d'une CFormView

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Acceder aux champs d'une CFormView

n°966974
Pepedimanc​ho
Posté le 31-01-2005 à 16:50:30  profilanswer
 

Salut tout le monde!!
 
Voici mon problème :jap: , je voudrais accéder aux variables menbres de ma classe CFormView lorsque que je suis dans une autre classe(par exemple une CDialog).
En effet je voudrais lorsque je modifie une variable de ma CDialog copier la valeur de cette variable dans le champ de ma CFormView.
J'ai essayé de créer une fonction qui permet d'accéder au champ de la CFormView, mais pour pouvoir utiliser cette fonction dans la classe CDialog il faut créer un objet CFormView, et là il me jette.
 
Voila, j'espère que j'ai été assez clair :jap:  

mood
Publicité
Posté le 31-01-2005 à 16:50:30  profilanswer
 

n°967321
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 31-01-2005 à 21:19:31  profilanswer
 

pour ta CDialog, créé un constructeur qui prendra en paramètre un pointeur vers la CFormView courante :
 

Code :
  1. // CMyFormView.h
  2. class CMyFormView
  3. {
  4.    private:
  5.       int _val;
  6.    public:
  7.       CMyFormView(); // constructeur par défaut
  8.       void SetValue(int);
  9. };
  10. // CMyFormView.cpp
  11. CMyFormView::CallDialog()
  12. {
  13.    CMyDialog theDialog = new CMyDialog(this); // on créé une instance de CMyDialog en passant en paramètre un pointeur vers l'instance courante de CMyFormView
  14.    theDialog.DoModal(); // en admettant que ta dialog soit modale
  15.    [...]
  16. }
  17. CMyFormView::SetValue(int val)
  18. {
  19.    _val = val;
  20. }
  21. // CMyDialog.h
  22. class CMyFormView;
  23. class CMyDialog
  24. {
  25.    private:
  26.       CMyFormView *_view;
  27.    public:
  28.       CMyDialog(); // constructeur par défaut
  29.       CMyDialog(CMyFormView*);
  30.    [...]
  31. };
  32. // CMyDialog.cpp
  33. CMyDialog::CMyDialog(MyCFormView *view)
  34. {
  35.    _view = view;
  36.    [...]
  37. }
  38. CMyDialog::SetFormValue(int x)
  39. {
  40.    _view->SetValue(x);
  41. }


 
j'ai créé un constructeur de CMyDialog qui prend un pointeur vers une CMyFormView.
afin d'accéder aux variables de CMyFormView souhaitées, j'ai créé un accesseur (SetValue() ), qui permet d'éviter de déclarer les variables membre en public (sécurité accrue)


Message édité par Harkonnen le 31-01-2005 à 21:21:16

---------------
J'ai un string dans l'array (Paris Hilton)
n°968731
Pepedimanc​ho
Posté le 01-02-2005 à 20:04:13  profilanswer
 

Merci pour ta reponse!!!
 
Mais en fait, je créé ma boîte de dialogue dans une fonction associée au menu de la fenêtre principale, donc associée à la classe CMainFrame.

Code :
  1. void CMainFrame::OnFileNew()
  2. {
  3. // TODO: Add your command handler code here
  4.     CDlgIntro CarteIntro;
  5.     CarteIntro.DoModal();
  6. }


 
Voila!!
Et donc la je lance ma boite de dialogue.
J'ai essayé de créer un pointeur CMyFormView * dans cette fonction mais je me fais jetter si je rafoute le *.h de la FormView dans un autre cpp.
La fonction CallDialog que tu as créé elle appartient à la FormView et vu que je suis dans la classe CMainFrame je peus pas l'appeler.
Ensuite, lorsque j'essaye de créer un constructeur pour ma boîte de dialogue avec en parametre un pointeur sur ma CFormView et ben il me jette pas, mais j'ai pas accé à mes champs pour autant.

Code :
  1. void CMainFrame::OnFileNew()
  2. {
  3. // TODO: Add your command handler code here
  4.         CDlgIntro CarteIntro(CMyFormView * MyFormView);
  5. CarteIntro.DoModal();
  6. MyFormView->//il se passe rien quand je met la flèche
  7. }


 
Comment fait on pointer CMyFormView * MyFormView vers la CFormView.
J'ai essayé un GetParent(), sans succés.
Enfin bon, je vois pas comment pointer sur cette maudite fenêtre principale et faire en sorte que lorsque je code et que j'appelle la flêche("->" ) il me mette toute les variables de la CFormView.
 
J'espere avoir était assez clair :pt1cable:  
Merci encore

n°968743
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 01-02-2005 à 20:20:47  profilanswer
 

Pepedimancho a écrit :

Merci pour ta reponse!!!
 
Mais en fait, je créé ma boîte de dialogue dans une fonction associée au menu de la fenêtre principale, donc associée à la classe CMainFrame.


Ce n'est pas du tout une obligation de l'associer à CMainFrame. Sous VS .NET, l'assistant de création d'évènement pour le menu te permet de choisir la classe dans laquelle tu souhaites traiter l'évènement du menu.
 

Pepedimancho a écrit :


J'ai essayé de créer un pointeur CMyFormView * dans cette fonction mais je me fais jetter si je rafoute le *.h de la FormView dans un autre cpp.


Créer un pointeur vers un CMyFormView ne sert à rien, tu dois récupérer le "this" et pas autre chose.
 
tip : pour récupérer le mainframe de ton application :

Code :
  1. CMainFrame * pFrame = (CMainFrame *)::AfxGetMainWnd();


pour ensuite récupérer la CMyFormView associée au mainframe :

Code :
  1. CMyFormView *pView = (CMyFormView*)pFrame->GetActiveView());


 

Pepedimancho a écrit :


Ensuite, lorsque j'essaye de créer un constructeur pour ma boîte de dialogue avec en parametre un pointeur sur ma CFormView et ben il me jette pas, mais j'ai pas accé à mes champs pour autant.
 
 

Code :
  1. MyFormView->//il se passe rien quand je met la flèche




As tu lu ma réponse précédente ?
Pour accéder à tes champs, il est largement mieux de créer des accesseurs plutot que de rendre tes champs publics.
 

Pepedimancho a écrit :


Comment fait on pointer CMyFormView * MyFormView vers la CFormView.
J'ai essayé un GetParent(), sans succés.


Une CMyFormView est une CFormView, tu peux donc utiliser un pointeur vers une CMyFormView pour pointer vers une CFormView sans utiliser de cast.


Message édité par Harkonnen le 01-02-2005 à 20:21:44

---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Acceder aux champs d'une CFormView

 

Sujets relatifs
combobox à 2 champsChamps date
MySql >> eviter des champsFocus et saisie d'un champs
Selection d'un champs et validation avec submit()[C/C++] Fenêtres, boutons, champs de textes...
[VB.Net] Comment accéder aux composants des autres form ?J'arrive pas à accéder à mes pages perso neuf!
[C] gerer des champs de bitsacceder au shell d un modem sur com1?
Plus de sujets relatifs à : Acceder aux champs d'une CFormView


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR