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 :

Récupérer et enregistrer le texte tapé dans une Edit box


Sujet :

MFC

  1. #1
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut Récupérer et enregistrer le texte tapé dans une Edit box
    Bonjour,

    J'aimerais récupérer et enregistrer le text tapé dans une editbox.

    J'utilse l'évènement OnChange et je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CString str;
    GetWindowText(str);
    Pouvez vous m'éclairer!!!!!!!!!!!!!

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    je suppose que le onchange c'est une méthode générée sur la classe Formview pour le contrôle en question ?
    si c'est le cas pose toi la question:
    Sur quel objet s'applique la méthode GetWindowtexte ?

  3. #3
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Je ne comprend pas ce que tu veux dire!!!

    Je peux peut-être utiliser un bouton au lieu d'utiliser l'évènement OnChange?

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    ce n'est pas compliqué ! , tu oublis une chose essentiel en programmation objet:le contexte d'appel du code .
    le code que tu as posté ne permet pas de connaitre le contexte ou il est utilisé. ( ou il est situé ce code ? )
    d'où ma question : sur quel objet s'applique la méthode GetWindowText.
    répondre à ça résoudra le problème.

  5. #5
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Ce code s'applique pour une fenêtre Do modal !?

  6. #6
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par wolverine1987 Voir le message
    Ce code s'applique pour une fenêtre Do modal !?
    salut.. je me permets d'interferer dans la discussion..
    en fait, il faut que tu te demande " je veux récupérer le texte de quoi??"
    tu fait un GetWindowText(strText).. mais tu n'associes t'as méthode à rien...
    par concéquent ton appli ne sait pas de quel texte tu parles...

  7. #7
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Beh je veux récupérer le texte que l'on tape dans la edit box!

    ensuite je voudrais l'enregistrer et le réafficher lorsque l'utlisateur demande de réafficher la fenêtre!!

  8. #8
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    ce n'est pas tout a fait ça...
    ce code équivaut à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CString str;
    this->GetWindowText(str);
    à quelle classe correspond this ?

  9. #9
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par wolverine1987 Voir le message
    Beh je veux récupérer le texte que l'on tape dans la edit box!

    ensuite je voudrais l'enregistrer et le réafficher lorsque l'utlisateur demande de réafficher la fenêtre!!
    la question c'était pour toi même lol. je connaissais la réponse
    c'était juste pour suivre la même technique de farscape pour que tu trouve la réponse par toi même..
    donc si tu ve récupérer le texte de ton editBox..c'est à ce control que tu dois associé ta methode GetWindowsText...
    t'as bien créé une variable de ce controle?..

  10. #10
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    Citation Envoyé par wolverine1987 Voir le message
    Beh je veux récupérer le texte que l'on tape dans la edit box!
    il est donc temps d'aller te plonger dans les cours pour débutant en C++ ...

  11. #11
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Pour l'instant j'arrive a écrire dans ma edit box par le programme ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BOOL CInfos::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
    	CEdit*pe=(CEdit*)GetDlgItem(IDC_EDIT_COMMENTAIRES);
    	pe->SetWindowText("Internet Explorer v5.5 est installé sur votre machine");
     
    	return TRUE;  // return TRUE unless you set the focus to a control
    	              // EXCEPTION: OCX Property Pages should return FALSE
    }
    Le problème c'est que je vais afficher toujours la même chose il faudrait que je remplace le texte qui est entre " " par une variable.

    tu fait un GetWindowText(strText).. mais tu n'associes t'as méthode à rien...
    en fait tu veux dire qu'il faut que je fasse un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItem(IDC_EDIT_COMMENTAIRES)
    Ceci veux dire que j'associe ma méthode IDC_EDIT...!?

  12. #12
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    il est donc temps d'aller te plonger dans les cours pour débutant en C++ ...
    tiens,
    http://farscape.developpez.com/tutor...arrer-mfc-vc6/

    un lien vers un tutoriel qui pourrait t'être très util.

  13. #13
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2009
    Messages : 164
    Points : 91
    Points
    91
    Par défaut
    Citation Envoyé par wolverine1987 Voir le message

    en fait tu veux dire qu'il faut que je fasse un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetDlgItem(IDC_EDIT_COMMENTAIRES)
    Ceci veux dire que j'associe ma méthode IDC_EDIT...!?
    non en fait..ouai faudra que t'aille voir le tutoriel lol. tu comprendra surement beaucoup mieux
    c'est peut etre possible en faisant un truc du genre mais il y a plus simple je pense.

    quand tu crée un control donc un bouton, un label, une listBox etc.. si tu veux pouvoir la modifier, il faut que tu ajoute une variable associée à ce controle. et c'est possible grace a click droit sur le control->ajouter une variable.

    et c'est par l'intermédiaire de cette variable que tu pourra accéder au contenu et le changer... ce sera le "this" que t'as marqué farscape un peu plus haut

    j'espère avoir été à peu près clair..

  14. #14
    Membre émérite
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Points : 2 677
    Points
    2 677
    Par défaut
    La méthode GetDlgItem permet de récupérer un CWnd * à partir de l'id de l'objet, après ce que tu viens de dire sur l'ajout d'une variable de contrôle ça revient à peu prêt au même dans ce cas. A noter qu'un objet graphique et sa variable de contrôle ne sont pas forcément créés tous les 2 quand tu peux avoir besoin d'y accéder à l'initialisation de ta classe d'où l'intérêt de GetDlgItem.

    Ça ne veut pas dire qu'il faut se dispenser d'aller voir les tuto

  15. #15
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Je suis allé voir les tutos et je me suis aider de ce 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    void CInfos::OnButtonrec() 
    {
    	// TODO: Add your control notification handler code here
    	UpdateData(TRUE); //mise a jour des données.
    	//tableau du CString associées aux contrôles
    	CString*parString[]={&m_valuecommentaires};
    	//Tableau de l'identifiant correspondant
    	UINT arnld[]={IDC_EDIT_COMMENTAIRES};
     
    	for(int i=0;i<sizeof(parString)/sizeof(CString*);i++)
    	{
    		//si la chaine de caractère est vide on redonne la main en saisie au contrôle en question.
    		if(parString[i]->IsEmpty())
    		{
    			GetDlgItem(arnld[i])->SetFocus();
    			return;
    		}
    	}
    	if(AfxMessageBox("confirmez l'enregistrement",MB_YESNO|MB_ICONQUESTION)==IDYES)
    	{
    		//sauvegarde des données.
    		CFileDialog dlg(false,"Tous","*.txt");
    		dlg.DoModal();
    	}
    }
    void CInfos::OnChangeEditCommentaires() 
    {
    	UINT arnld[]={IDC_EDIT_COMMENTAIRES};
     
    	int nFull=0;
    	CString str;
    	for(int i=0; i<sizeof (arnld)/sizeof(UINT);i++)
    	{
    		GetDlgItem(arnld[i])->GetWindowText(str); //récupération du texte dans le contrôle
    		nFull+=(!str.IsEmpty());
    	}
    	// active ou désactive le contrôle si le contrôle est rempli ou vide.
    	m_ButtonREC.EnableWindow((nFull==sizeof(arnld)/sizeof(UINT)));	
    }
    J'ai un problème pour l'enregistrement! je lui dit d enregistrer ce que j'ai tapé sur le bureau me cela ne fonctionne pas!!!

  16. #16
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Comment enregistrer ce que l'on tape dans une edit box et le réafficher?

    La méthode que j'utilise ne fonctionne pas lorsque je clic sur mon bouton enregistrer une fenêtre DoModal s'affiche pour que je sélectionne ou je veux l'enregistrer mais lorsque je clic sur enregistrer cela ne fonctionne pas!

  17. #17
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Monsieur ,tout simplement faites associer une variable a votre controle puis:

    si tu veux recuperer une valeur appellez UpdateData(true)
    et si tu veux afficher la valeur de la variable UpdateData(false)

  18. #18
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    Je n'arrive toujours pas à enregistrer :

    J'ai éssayer ceci mais ca ne fonctionne pas!!
    Quelles sont mes erreurs?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	if(AfxMessageBox("confirmez l'enregistrement",MB_YESNO|MB_ICONQUESTION)==IDYES)
    	{
    		//sauvegarde des données.
    		m_Ctrlcommentaires.GetWindowText(m_valuecommentaires);
    		CFileDialog FileOpenDialog( FALSE, "m_valuecommentaires", NULL, OFN_HIDEREADONLY, "Fichiers (*.txt)|*.txt||" );
    		FileOpenDialog.m_ofn.lpstrInitialDir="c:\\test\\";
    	}
    Merci d'avance pour votre aide

  19. #19
    Débutant
    Inscrit en
    Avril 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 133
    Points : 50
    Points
    50
    Par défaut
    j'ai trouvé une solution!

    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
    void CInfos::OnButtonrec() 
    {
    	// TODO: Add your control notification handler code here
    	UpdateData(TRUE); //mise a jour des données.
    	//tableau du CString associées aux contrôles
    	CString*parString[]={&m_valuecommentaires};
    	//Tableau de l'identifiant correspondant
    	UINT arnld[]={IDC_EDIT_COMMENTAIRES};
     
    	for(int i=0;i<sizeof(parString)/sizeof(CString*);i++)
    	{
    		//si la chaine de caractère est vide on redonne la main en saisie au contrôle en question.
    		if(parString[i]->IsEmpty())
    		{
    			GetDlgItem(arnld[i])->SetFocus();
    			return;
    		}
    	}
    	if(AfxMessageBox("confirmez l'enregistrement",MB_YESNO|MB_ICONQUESTION)==IDYES)
    	{
    		//sauvegarde des données
    		GetDlgItem(IDC_EDIT_COMMENTAIRES)->GetWindowText(str);
    	}
    }
    et pour le réafficher dans mon edit box je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    BOOL CInfos::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
    	GetDlgItem(IDC_EDIT_COMMENTAIRES)->SetWindowText(str);
    	return TRUE;  // return TRUE unless you set the focus to a control
    	              // EXCEPTION: OCX Property Pages should return FALSE
    }

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

Discussions similaires

  1. Ajouter du texte dans une edit box
    Par raf_gug dans le forum MFC
    Réponses: 10
    Dernier message: 23/05/2013, 10h00
  2. Récupérer le texte tapé dans une cellule d'un DBGrid
    Par dark_geek dans le forum Composants VCL
    Réponses: 7
    Dernier message: 14/06/2012, 14h12
  3. [AC-2007] Récupérer l'enregistrement le plus récent dans une requête
    Par MelaAllIn dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 20/07/2011, 15h36
  4. [AC-2007] Masquer le texte tapé dans une InputBox
    Par Imitator92 dans le forum IHM
    Réponses: 4
    Dernier message: 17/09/2009, 20h12
  5. Texte riche dans une combo box
    Par Tororo73 dans le forum IHM
    Réponses: 1
    Dernier message: 14/10/2008, 13h59

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