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

gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 18 mai 2010 à 10:07 - Dernière réponse : gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention
- 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 

17 réponses

Répondre au sujet
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 27 mai 2010 à 11:20
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_louis14
gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 27 mai 2010 à 13:26
+3
Utile
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!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de gub156
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 18 mai 2010 à 10:21
0
Utile
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
gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 18 mai 2010 à 10:33
0
Utile
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
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 18 mai 2010 à 12:47
0
Utile
Faudrait surtout savoit EN QUOI tu codes sur VC++.

MFC ?
API directement ?
Framework .net ?

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 18 mai 2010 à 16:22
0
Utile
la classe qui correspond à ta boite de dialogue


louis
Commenter la réponse de cs_louis14
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 19 mai 2010 à 15:46
0
Utile
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
gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 26 mai 2010 à 15:09
0
Utile
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
racpp 1910 Messages postés vendredi 18 juin 2004Date d'inscription 14 novembre 2014 Dernière intervention - 26 mai 2010 à 18:14
0
Utile
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
gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 26 mai 2010 à 18:38
0
Utile
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
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 26 mai 2010 à 20:14
0
Utile
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
gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 26 mai 2010 à 21:27
0
Utile
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
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 27 mai 2010 à 09:11
0
Utile
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
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 27 mai 2010 à 09:16
0
Utile
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
gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 27 mai 2010 à 09:23
0
Utile
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
cs_louis14 788 Messages postés mardi 8 juillet 2003Date d'inscription 8 mars 2017 Dernière intervention - 27 mai 2010 à 09:28
0
Utile
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
gub156 19 Messages postés vendredi 25 janvier 2013Date d'inscription 4 septembre 2014 Dernière intervention - 27 mai 2010 à 10:38
0
Utile
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.