Bonjour,
J'aimerais récupérer et enregistrer le text tapé dans une editbox.
J'utilse l'évènement OnChange et je fais
Pouvez vous m'éclairer!!!!!!!!!!!!!:(Code:
1
2 CString str; GetWindowText(str);
Version imprimable
Bonjour,
J'aimerais récupérer et enregistrer le text tapé dans une editbox.
J'utilse l'évènement OnChange et je fais
Pouvez vous m'éclairer!!!!!!!!!!!!!:(Code:
1
2 CString str; GetWindowText(str);
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 ?
Je ne comprend pas ce que tu veux dire!!!:?
Je peux peut-être utiliser un bouton au lieu d'utiliser l'évènement OnChange?
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.
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...
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!!
ce n'est pas tout a fait ça...
ce code équivaut à:
à quelle classe correspond this ?Code:
1
2
3 CString str; this->GetWindowText(str);
la question c'était pour toi même lol. je connaissais la réponse :mouarf:
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?..
Pour l'instant j'arrive a écrire dans ma edit box par le programme ça donne
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.Code:
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 }
en fait tu veux dire qu'il faut que je fasse unCitation:
tu fait un GetWindowText(strText).. mais tu n'associes t'as méthode à rien...
Ceci veux dire que j'associe ma méthode IDC_EDIT...!?Code:GetDlgItem(IDC_EDIT_COMMENTAIRES)
tiens,
http://farscape.developpez.com/tutor...arrer-mfc-vc6/
un lien vers un tutoriel qui pourrait t'être très util. ;)
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..:oops:
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 :roll:
Je suis allé voir les tutos et je me suis aider de ce code
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!!!Code:
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))); }
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!:?
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)
Je n'arrive toujours pas à enregistrer :
J'ai éssayer ceci mais ca ne fonctionne pas!!
Quelles sont mes erreurs?
Merci d'avance pour votre aide:cry:Code:
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\\"; }
j'ai trouvé une solution!
et pour le réafficher dans mon edit box je fais :Code:
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); } }
Code:
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 }