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

Windows Discussion :

limiter la saisie dans un edit à des réels!!!


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 13
    Points
    13
    Par défaut limiter la saisie dans un edit à des réels!!!
    bonjour,

    je programme en utilisant les fonctions de l'api windows et je voudrais que l'utilisateur de mon application ne puisse entrer que des réels dans un edit que j'ai créé....

    je galère, qq pourrait il m'aider?!!

  2. #2
    mat.M
    Invité(e)
    Par défaut
    c'est une question spécifique au développement Windows..
    Donc il serait souhaitable de la poser dans le forum approprié.
    pour gérer la saisie dans une Edit Box il faut filtrer les touches enfoncées , je ne vois que ce moyen là .
    Lorsque l'utilisateur tape du texte dans une zone de texte , il ya un message ES_XXXXX qui est envoyé à la zone de texte ( voir MSDN) donc filtrer le ou les messages.

    Sinon à la création de la zone de texte , spécifier le style ES_NUMBER( éventuellement avec SetWindowLong)

  3. #3
    Membre actif Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Points : 224
    Points
    224
    Par défaut re
    Voila comment faire(pas testé):
    ->tu créés un contrôle edit
    ->tu récupère la notification EN_UPDATE(envoyée pas WM_COMMAND)
    et tu appèles une fonction qui récupère le dernier char entré regarde
    s'il est bon, ne fait rien s'il cest ok, ou le supprime du texte et envoie
    un "bip" si pqs ok
    L'intérêt de EN_UPDATE est que cette notification est envoyé AVANT QUE LE EDIT SOIT DESSINER donc le texte est encore modifiable . Je sais que c'est de la bidouille mais bon.... Sinno il doit y avoir les contrôle perso mais je ne sais pas comment on fait !!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 13
    Points
    13
    Par défaut


    Heu... en fait, je n'arrive pas trop à voir comment concrêtement appliquer tes conseils...
    le ES_NUMBER ne peut pas convenir car je veux des entiers.

    Si tu pouvais me préciser un petit peu Amaury pauli l'histoire du EN_UPDATE car je suis assez débutant....

    merci d'avance.

    PS: tu est clermontois?! moi aussi!!
    on est bien chez nous!!

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    je voulais dire, je veux des reels... donc pas de ES_NUMBER.

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    tu bosses avec quel compilo ?

    (moi aussi chui à clermont, mais jveux rentrer à Rennes = Rhoazon )

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    lcc-win32

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Il faut subclasser ton controle, c.a.d fournir ta propre fonction de vérification de saisie.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 13
    Points
    13
    Par défaut

    en fait, j'ai essayé mais, je ne parviens pas à bien filtrer les caractères un par un pour les verifier tous...
    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
                    Edit_GetText(hCbHum,recup,30);
    	for&#40;int i=0;i<31;i++&#41;
                       &#123;
                           if &#40;recup&#91;i&#93; != ' ' && recup&#91;i&#93; != '0' && recup&#91;i&#93; != '1' 
                               && recup&#91;i&#93; != '2' && recup&#91;i&#93; != '3' && recup&#91;i&#93; != '4' 
                               && recup&#91;i&#93; != '5' && recup&#91;i&#93; != '6' && recup&#91;i&#93; != '7'  
                               && recup&#91;i&#93; != '8' && recup&#91;i&#93; != '9' && recup&#91;i&#93; != '.'&#41;
                            &#123;
    	         res = 1;
                             fprintf&#40;fp,"la valeur de l'humidité doit être un réel\n"&#41;;
                             recup&#91;i&#93; = ' ';
                             &#125;
    	    &#125;
    	Edit_SetText&#40;hCbHum,recup&#41;;
    j'ai essayé aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        conv = atof&#40;recup&#41;;
        if &#40;conv = 0&#41;
        &#123;
         res = 1;
         fprintf&#40;fp,"la valeur entrée pour l'humidité n'est pas valide.\n"&#41;;
         fprintf&#40;fp,"il faut entrer un reel, avec comme séparateur un point!\n"&#41;;
        &#125;
    et rien ne marche....

    [Balises [code] ajoutées par HW]

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    En subclassant ton controle tu peux choisir les caractères acceptés (chiffres + 1 seul '.' ou ',' en fonction de la locale...)
    Le plus simple pour valider l'entrée est une expression régulière.
    Sinon ton code se simplifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if &#40; !isdigit&#40; recup&#91;i&#93; &#41; && recup&#91;i&#93; != '.' &#41;
    Pour le subclaasing :
    http://msdn.microsoft.com/library/en-us/dnwui/html/msdn_subclas3.asp

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    j'ai trouvé la solution enfin!!!
    je vous la livre, si ça peux servir à d'autres :

    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
     for&#40;int i=0;recup&#91;i&#93;;i++&#41; 
        &#123;
        if &#40;recup&#91;i&#93; != '0' && recup&#91;i&#93; != '1' 
                            && recup&#91;i&#93; != '2' && recup&#91;i&#93; != '3' && recup&#91;i&#93; != '4' 
                            && recup&#91;i&#93; != '5' && recup&#91;i&#93; != '6' && recup&#91;i&#93; != '7'  
                            && recup&#91;i&#93; != '8' && recup&#91;i&#93; != '9' && recup&#91;i&#93; != '.'&#41;    
            &#123; 
             res2 = 1;  
            &#125;
        else
             if &#40;recup&#91;i&#93; == '.'&#41;
              &#123;
               cpt++;
              &#125;
        &#125;  
      
        if &#40;res2==1 || cpt>1&#41;
            &#123;
            res = 1;
            fprintf&#40;fp,"la valeur entrée pour l'humidité n'est pas valide.\n"&#41;; 
            fprintf&#40;fp,"il faut entrer un reel, \n"&#41;;
            fprintf&#40;fp,"avec comme séparateur un point!\n"&#41;;   
            &#125;
    merci encore à tous pour votre aide.

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

Discussions similaires

  1. Limiter la saisie dans un Jtextfield
    Par boudji dans le forum JBuilder
    Réponses: 2
    Dernier message: 20/08/2006, 10h57
  2. [plus que débutant]Comment limiter la saisie d'un Edit?
    Par Askarod dans le forum Composants VCL
    Réponses: 3
    Dernier message: 20/12/2005, 08h27
  3. [SQL] Limiter la saisie dans une table
    Par dolphi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/09/2005, 11h43
  4. Limiter la saisie dans un élément texte
    Par manou.K dans le forum Oracle
    Réponses: 2
    Dernier message: 28/07/2005, 11h41

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