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 :

[MFC] Probl�me d'EditBox


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut [MFC] Probl�me d'EditBox
    Bonjour tout le monde !

    Voila mon probl�me :

    Je dois pouvoir modifier des valeurs num�riques dans un fichier texte (enti�res et r�elles) par l'interm�diaire d'une interface avec des EditBox auxquels j'ai associ� les variables correspondantes aux valeurs � modifier.
    La lecture et l'�criture de ces valeurs ce font tr�s bien.
    Mon probl�me c'est que je peux aussi mettre du texte. Il me faudrait donc limiter la saisie � des caract�res num�riques et un point pour les d�cimaux.
    Dans les propri�t�s des EditBox on peut limiter aux caract�res num�riques seulement. Ce qui me pose un probl�me pour les nombres d�cimaux.

    Quelle solution me proposez-vous ?

    Merci d'avance.

    J�r�my

  2. #2
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Je ne vois pas d'autre solution que d'intercepter le message EN_CHANGE du CEdit et de virer les d�cimales.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    Ok je n'y avais pas pens�.
    Mais je sais pas trop comment m'y prendre j'ai essay� plusieurs choses mais ca marche pas.
    Auriez-vous une solution ?

    Merci !

    J�r�my

  4. #4
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    tu ne sais pas trop comment intercepter le message ? si c'est ca alors :
    1. visual studio 6 : classpath et je crois que c'est messages ou bien �v�nement je ne sais plus lol et tu verras le message EN_CHANGE dans une liste
    2. visual studio 2003 (2005 ?) : clique sur ton edit vas danta fenetre propriete clique sur le petit n'eclair (je crois que c'est ca) et tu verras sur la colonne de gauche un EN_CHANGE

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    Merci

    non ca c'est bon !

    C'est le code que je met apr�sil n'a aucun effet sur mon EditBox.

  6. #6
    Membre confirm�
    Homme Profil pro
    D�veloppeur .NET
    Inscrit en
    F�vrier 2004
    Messages
    189
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur .NET

    Informations forums :
    Inscription : F�vrier 2004
    Messages : 189
    Par d�faut
    Apres tes modifs, tu as fait un petit UpdateData(false) pour bien "sauver" les valeurs....

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    Avec UpdateData(false) c'est mieux !

    Mais je ne vois pas trop comment lui dire de ne prendre que les chiffres et le point.

    J'ai fait ca : (Seuil_PenteTQ est une CString)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CDlgReglages::OnEnChangeEdit13()
    {
       if(_ttoi(Seuil_PenteTQ.Right(1))>9 || _ttoi(Seuil_PenteTQ.Right(1))<1)
          Seuil_PenteTQ = Seuil_PenteTQ.Left(Seuil_PenteTQ.GetLength()-1) ;
     
       UpdateData(false) ;
    }
    mais ca marche pas.

    Avez-vous une id�e ?

  8. #8
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    moi j'utiliserais la fonction strtod pour convertir en double (voir FAQ : http://c.developpez.com/faq/vc/?page...ConvertCString) et je verifierai une verification sur stopstring

  9. #9
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Sinon, dans la fonction que tu nous a donn�:
    1/ Tu ne teste que le premier carract�re de tout ce qu'il y a dan ton �dit ( Seuil_PenteTQ.Right(1) ). Si tu veux tester toute ta chaine, il te faudra faire une boucle.
    2/ Il ne faut pas oublier de r�cup�rer de contenu du CEdit avant de le traiter (peut-�tre le fais-tu ailleurs), � l'aide de CEdit::GetWindowText(CString &text);

    Hope it helps.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    Non avec Seuil_PenteTQ.Right je teste le dernier caract�re c'est-a-dire celui qui vient d'�tre saisi dans l'EditBox pour v�rifier si il est valide.

    Sinon s'il ne l'est pas je garde toute la chaine mais avec le caract�re invalide qui vient d'�tre saisi en moins:
    Seuil_PenteTQ.Left(Seuil_PenteTQ.GetLength()-1)

    Je vois pas trop....

  11. #11
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    ho, excuse-moi, j'ai r�pondu trop vite.
    Mais ce n'est pas tr�s clair ton histoire, pourrais-tu donner quelques pr�cisions?
    1/ Ca ne marche pas, d'accord, mais qu'est-ce qu'il se passe pr�cis�ment?
    2/ Je ne comprends pas comment sont li�s la variable Seuil_PenteTQ et ton CEdit.
    3/ Quand tu met un point d'arr�t dans ta fonction, est-ce que Seuil_PenteTQ contient bien ce qu'on a saisi dans le CEdit?

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    ho, excuse-moi, j'ai r�pondu trop vite.
    Pas de soucis

    1/ Ca ne marche pas, d'accord, mais qu'est-ce qu'il se passe pr�cis�ment?
    Rien en fait !
    C'est-a-dire qu'avec le code que j'ai donn� dans le post pr�c�dent, quand je rentre quelque chose, c'est supprim� imm�diatement. R�sultat : je peux rien rentrer.

    2/ Je ne comprends pas comment sont li�s la variable Seuil_PenteTQ et ton CEdit.
    j'ai d�clar� une variable li�e � mon CEdit. (d�sol� pour les explications bidons mais je comprends rien au MFC

    3/ Quand tu met un point d'arr�t dans ta fonction, est-ce que Seuil_PenteTQ contient bien ce qu'on a saisi dans le CEdit?
    Je peux pas d�boguer.

    Merci pour l'aide.

  13. #13
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    hiko-seijuro :
    oui j'ai d�j� vu mais je ne comprends pas tr�s bien.
    Je vais quand m�me essayer

  14. #14
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    ca donnerait un truc comme ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    char* stopString;
    strtod(Seuil_PenteTQ.GetBuffer(), &stopString);
    if (stopString != NULL)
      "traitement de ton erreur"

  15. #15
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    et ca fait quoi ca au juste ?

  16. #16
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par d�faut
    ca essaie de convertir en double et des qu'un caract�re qui ne peut pas etre converti est d�tect�, il stock son adresse dans stopstring. Donc si tout est converti (tout est de la forme d'un double) , stopstring renvoie NULL.

    Si stopstring diff�rent de null cela voudra dire que tu as un caract�re interdit

  17. #17
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    Ce que j'appelle un caractere interdit c'est juste un caract�re qui n'est pas un chiffre ou un point

  18. #18
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    hiko-seijuro :
    J'ai utilis� le code pr�c�dent que tu m'as donn� mais ca ne marche pas.
    M�me si je rentre un chiffre la condition if est respect�e.
    Je ne comprends pas

  19. #19
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 299
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 299
    Billets dans le blog
    2
    Par d�faut
    Citation Envoy� par le-makinero
    Avec UpdateData(false) c'est mieux !

    Mais je ne vois pas trop comment lui dire de ne prendre que les chiffres et le point.

    J'ai fait ca : (Seuil_PenteTQ est une CString)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void CDlgReglages::OnEnChangeEdit13()
    {
       if(_ttoi(Seuil_PenteTQ.Right(1))>9 || _ttoi(Seuil_PenteTQ.Right(1))<1)
          Seuil_PenteTQ = Seuil_PenteTQ.Left(Seuil_PenteTQ.GetLength()-1) ;
     
       UpdateData(false) ;
    }
    mais ca marche pas.

    Avez-vous une id�e ?
    Essaie de mettre un UpdateData(true); avant le if.

    Comment se fait-il que tu ne puisse pas d�bugger??!!?

  20. #20
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    67
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 67
    Par d�faut
    Je fais un stage ds un labo d'informatique
    c'est une question de droits, je les ai pas.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 4 1234 Derni�reDerni�re

Discussions similaires

  1. [MFC] probl�me avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    R�ponses: 12
    Dernier message: 11/06/2004, 15h31
  2. R�ponses: 3
    Dernier message: 05/05/2004, 10h23
  3. [MFC] Probl�me pointeur sur une classe
    Par mick74 dans le forum MFC
    R�ponses: 7
    Dernier message: 14/04/2004, 14h17
  4. [MFC] Probl�me de pointeur !!
    Par acastor dans le forum MFC
    R�ponses: 7
    Dernier message: 19/03/2004, 15h50
  5. [MFC] probl�me d'�x�cution
    Par ben_iap dans le forum MFC
    R�ponses: 2
    Dernier message: 15/03/2004, 10h31

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