Recuperation de la valeur d'une textbox [Résolu]

Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
- - Dernière réponse : gub156
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
- 27 mai 2010 à 13:26
Bonjour,

Je suis débutant en Visual C++ et j'ai quelques problèmes avec une textbox. J'ai parcouru pas mal de forums, googler pas mal aussi, mais je n'arrive à rien du tout.

Alors voici mon problème: dans une textbox je dois rentrer une valeur (numérique uniquement). Après avoir entrer cette valeur, je voudrais effectuer quelques calculs et c'est là que je bloque. Impossible de récuperer cette fichue variable. J'ai essayer GetWindowText, ou d'autres fonctions conseillées dans des forums, mais rien n'y fait.

Est-ce que quelqu'un aurait une réponse pour moi?

D'avance merci

Ju!
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
3
Merci
Bonjour,
Autant pour moi , car je suis sous C# en ce moment. J'ai créé un petit projet pour me remettre dans le bain et voici :
int^ valeurAltitude = Convert::ToInt32(this->textBoxAltitude.Text);

louis

Merci cs_louis14 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_louis14
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
3
Merci
Merci beaucoup pour ton aide Louis14. Ta fonction est effectivement fonctionnelle à un petit détail près. Il faut remplacer le .Text par ->Text comme suit:

int^ valeurAltitude = Convert::ToInt32(this->textBoxAltitude->Text); 

Merci à tous pour votre aide


Ju!

Merci gub156 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de gub156
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
0
Merci
Bonjour,
Tu travailles avec quelle version de VC++?
Avec VC++ 6.0 il faut utiliser le classwizard pour ajouter une variable .
Pour les versions ultérieures, il click droit sur la classe de ta boite de dialogue et choisir le menu ajouter une variable. Dans la nouvelle boite de dialogue choisir variable de contrôle et selectionner l'ID de ta textbox.


louis
Commenter la réponse de cs_louis14
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
0
Merci
Merci pour ces premiers conseils. Je travaille avec Visual C++ 2008. Ma question sera peut être bête, mais à quoi correspond la classe sur laquelle je suis sensé cliquer???

D'avance merci


Ju!
Commenter la réponse de gub156
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
Faudrait surtout savoit EN QUOI tu codes sur VC++.

MFC ?
API directement ?
Framework .net ?

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
0
Merci
la classe qui correspond à ta boite de dialogue


louis
Commenter la réponse de cs_louis14
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
0
Merci
Salut,
GetWindowText() te permet de récupérer le texte du textbox. Elle prend en paramètre le HWND du texbox, un pointeur sur le buffer qui contiendra le texte et une valeur indiquant la taille du buffer. Si les trois paramètres sont valides il n'y a aucune raison pour que la fonction ne marche pas. Il faudra juste ensuite convertir le texte en entier avec une fonction du genre atoi().
GetDlgItemInt() te permet de récupérer directement la valeur numérique du textbox. Cette fonction à besoin de l'identificateur du textbox comme deuxième paramètre.
Commenter la réponse de racpp
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
0
Merci
Rebonjour à tous,

Merci pour votre aide, mais malheureusement, je n'arrive toujours pas a dompter cette satanée fonction. Qu'est ce que c'est que ce HWND? Est-ce que le pointeur contenant le texte est un pointeur déjà déclaré par défaut ou dois-je le déclaré moi-même? Finallement, qu'est ce que l'dentificateur du textbox? Où est-ce que cela se trouve?

Si quelqu'un a un exemple à mettre à disposition, je lui serait très reconnaissant.


Merci beaucoup


Ju!
Commenter la réponse de gub156
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Dernière intervention
14 novembre 2014
0
Merci
Montre une partie de ton code pour qu'on puisse voir comment tu codes. On supposait que tu travailles en Win32 API.
Commenter la réponse de racpp
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
0
Merci
Je vous donne quelques bouts de code. Où est-ce que l'on peut trouver des informations par rapport au type de langage utilisé?



private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) 
{
 ULONG BytesWritten = 0;
 ULONG BytesRead = 0;
 unsigned char OutputPacketBuffer[64];	
 unsigned char InputPacketBuffer[64];	
 
 static unsigned char passage = 0;

 signed char ValueTemp;


if(checkBoxHumid->Checked)							// Si checkBox activée
 {
if(cmptHumidite < 20)							// Moyenne sur 20 valeurs
{
timer = InputPacketBuffer[3];
timer = timer << 8;
timer |= InputPacketBuffer[4];
moyenneHumiditeLong += timer;
cmptHumidite++;
}
else if(cmptHumidite >= 20)
{
moyenneHumiditeLong /= 20;
moyenneHumidite = (short)moyenneHumiditeLong;	// Conversion de variable pour affichage
if(moyenneHumidite > 65535)						// Si la moyenne dépasse la valeur max du
{												// timer, on efface la valeur et on recommence
cmptHumidite = 0;							// le calcul de moyenne
moyenneHumidite = 0;
}
}
 }


Voilà, j'espère que j'ai donné assez d'informations pour que vous m'aidiez

Merci


Ju!
Commenter la réponse de gub156
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Dernière intervention
7 novembre 2014
0
Merci
Ceci n'est pas du code natif mais du .NET (de l'interprété profond), il convient de l'indiquer dans la question.

Je passe mon chemin.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
0
Merci
Merci beaucoup pour cette information. Comme je le disait dans le message précédent, je ne sais pas où trouver cette information et je ne suis pas informaticien.


Ju!
Commenter la réponse de gub156
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
0
Merci
Bonjour,
où est le code où tu dois récupérer le texte afin que je puisse te donner un coup de main.

louis
Commenter la réponse de cs_louis14
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
0
Merci
Rebonjour,
selon ton besoin il faut utiliser :
type_voulu = type_voulu.Parse(Ma_TextBox.Text);
avec type_voulu : int, decimal, double en fonction de ton besoin et Ma_text_box le nom de la textbox dont tu veux récupérer la valeur.
Tu peux aussi utiliser TryParse si tu n'es pas trop sûr de la string dans ta textbox.
Cherche de l'aide sur MSDN ou internet pour es mot-clés de .NET : Parse, TryParse.


louis
Commenter la réponse de cs_louis14
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
0
Merci
Bonjour,

Voilà l'endroit dans lequel j'aimerais intégrer la valeur de ma textbox. La valeur sera en fait une altitude et pour l'instant, je fais mon calcul avec une valeur fixe (ici 430). La valeur de la textbox remplacerait donc les valeurs 430 * 430.

if(checkBoxPression->Checked)	// Si checkBox activée
{
        valeurPressionCapteur = InputPacketBuffer[1];	// Valeur de la pression sur 8 bits
        valeurPressionCapteurFloat = (((float)valeurPressionCapteur / 255 + 0.095) / 0.0009) + 1.5;
valeurAltitudeCarre = 430 * 430;
valeurPressionFloat = -.000004829 * (int)valeurAltitudeCarre + 0.119 * 430 + valeurPressionCapteurFloat;
}


Voici les informations liées à la textbox:

// 
// textBoxAltitude
// 
this->textBoxAltitude->Location = System::Drawing::Point(146, 43);
this->textBoxAltitude->Name = L"textBoxAltitude";
this->textBoxAltitude->Size = System::Drawing::Size(100, 20);
this->textBoxAltitude->TabIndex = 30;


Je ne sais pas si cela est suffisant pour m'aider, mais je reste évidement à disposition pour d'autres informations.

Merci beaucoup!!!



Ju!
Commenter la réponse de gub156
Messages postés
788
Date d'inscription
mardi 8 juillet 2003
Dernière intervention
8 mars 2017
0
Merci
Bonjout,
Dans ce cas il te faut cela :
int valeurAltitude = int.TryParse(this->textBoxAltitude.Text);
et valeurAltitude contiendra ta valeur.
Pour un double:
double valeurAltitude = double.TryParse(this->textBoxAltitude.Text);
Bon codage.

louis
Commenter la réponse de cs_louis14
Messages postés
19
Date d'inscription
vendredi 25 janvier 2013
Dernière intervention
4 septembre 2014
0
Merci
Merci Louis14. J'ai essayer ta solution, mais j'ai une erreur lors de la compilation. La voici:

error C2062: type 'int' unexpected

Et voilà comment j'ai modifié mon code:

if(checkBoxPression->Checked)	// Si checkBox activée
{
int valeurAltitude = int.TryParse(this->textBoxAltitude.Text);
valeurPressionCapteur = InputPacketBuffer[1];	// Valeur de la pression sur 8 bits
valeurPressionCapteurFloat = (((float)valeurPressionCapteur / 255 + 0.095) / 0.0009) + 1.5;
valeurAltitudeCarre = 430 * 430;
valeurPressionFloat = -.000004829 * (int)valeurAltitudeCarre + 0.119 * 430 + valeurPressionCapteurFloat;
}


Apparement, c'est le int de int.TryParse qu'il n'aime pas, mais si je l'enlève, c'est une autre erreur:

error C3861: 'TryParse': identifier not found

Je ne voit pas trop où je pourrais modifier quelque chose dans la fonction pour éliminer cette erreur...



Ju!
Commenter la réponse de gub156

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.