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

WinDev Discussion :

Modification d'un champ [WD16]


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut Modification d'un champ
    Bonjour, je suis actuellement en stage et je découvre un peu le Wlanguage.

    J'ai commencer avec le premier exemple de l'auto formation de leur livre, a savoir un simple compteur (un champs et des flèches pour incrémenter ou dé-incrémenter).
    J'ai ensuite voulu fixer des limites (min et max) pour m'exercer.

    Le comportement que j’attends : que se soit constamment entre 0 et 15.
    - Si on appui sur la flèche du haut, sa ne doit pas augmenter si sa dépasse la borne max.
    - Idem pour la flèche du bas.
    - Si on saisie une valeur : Si elle dépasse la borne max, on la remplace par la borne max, idem pour la valeur min. C'est ici que se trouve mon problème.


    Je pourrais en effet empêcher la saisie dans le champs mais ce n'est pas ce que je cherche a faire.


    Voici donc mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SI SAI_compteur..ValeurAffichée > SAI_compteur..BorneMax ALORS
    	SAI_compteur = SAI_compteur..BorneMax
    FIN
    Le problème vient du fait que SAI_compteur..Valeur provoque une erreur quand on se situe dans l’événement "A chaque modification"
    Le problème c'est que a l’événement "A la sortie" mon code n'est jamais exécute car l'info bulle disant que la valeur doit être comprise entre 0 et 15 passe avant mon code.

    Il me faudrait l’équivalent de l’événement "après validation" et pas "a chaque modification" mais je voit qu'il n'existe pas.

    Ma question : Comment modifier la valeur du champs quand on se situe dans "a chaque modification" car à chaque fois windev me lance le programme de débogage, sans être vraiment très explicite.

    Hum... j’espère que j'ai été clair, c'est un petit problème mais il me tracasse pas mal. D’ailleurs il y a peut être une étape que j'ai rater car malgré que je fixe les bornes max et min dans "Description" si je ne fait pas de conditions dans le code je peut les dépasser.


    Vous excuserai la question qui peut sembler ridicule, mais je ne suis pas vraiment habituer à ce langage. Merci bien.

    Note : Voici une capture d’écran qui sera plus explicite que mes tonnes d'explications

  2. #2
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Essayes d'utiliser sai_compteur plutôt que sai_compteur..valeuraffichée.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    L'erreur vient de la ligne 2.

    Que j'utilise sai_compteur ou sai_compteur..Valeur je me retrouver toujours en deboguage apres avoir écrit 1 caracteres. Et cela meme si je les places dans la condition en ligne 1.

    Par contre en mettant sai_compteur..ValeurAffiché pas de deboguage (si je laisse seulement la condition) mais cette propriété n'est qu'en lecture seule, je ne peut pas m'en servir pour modifier.

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 346
    Points : 3 867
    Points
    3 867
    Par défaut
    Bonjour,

    Je ne connaissais pas cette notion de BorneMin et BorneMax sur un champ de saisie numérique.
    Je viens d'essayer et je rencontre le même problème, cad que si je saisis 20, pour un max de 15, l'infobulle s'affiche mais le code de sortie ne s'exécute pas.

    A mon avis, pour gérer ce cas figure, il te faut utiliser les propriétés BorneMin et BorneMax de ton champ spin, au lieu de celles du champ de saisie.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    Bah ouais c'est tout con en faite. Je sait pas pourquoi je n'y est pas pensé plus tôt. Il semblerai qu'il soit impossible de modifier un champs pendant que l'utilisateur saisie je me trompe ?

    Les bornes du spin ne servent a rien en dehors du code que j'utilise. Sans code sa ne limite strictement rien du tout. Je comprend pas trop pourquoi mais peut importe.

    Juste une mini question : Ya t'il moyen qu’après avoir écrit 20 (ou un autre nombre), qu'en faisant "Entrer" sa sorte de mon champs pour effectuer la modification ?

    C'est franchement un détails mais bon tant qu'a faire, si ce n'est qu'une petit propriété à cocher quelque part, autant s'en servir.

    Encore merci pour cette aide. Sa me tracasser dans un coin de mon esprit je me sens libéré maintenant

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 346
    Points : 3 867
    Points
    3 867
    Par défaut
    Tu veux écrire 15 au lieu de 20 lors de la sortie du champ ?

    J'ai repris ton code avec une modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI SAI_compteur..ValeurAffichée > SAI_compteur..BorneMax ALORS
    	SAI_compteur = monChampSpin..BorneMax
    FIN

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    Ne t’inquiète pas j'ai bien arranger mon code. J'ai enlever les bornes du champs numérique et j'utilise bien celle du spin.

    Mais en dehors de mon utilisation (de mon code), le spin ne bloque pas quand le champs arrive à la valeur de sa borne max. Je suis obliger de faire un SI dans le spin pour bloquer l'ajout via le SPIN. Du coups je comprend pas trop l’intérêt d'avoir intégré une propriété min et max dans un spin si windev ne s'en sert pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Sortie de SAI_compteur
    SI SAI_compteur > SPIN_SpinEntier..BorneMax ALORS
    	SAI_compteur = SPIN_SpinEntier..BorneMax
    SI SAI_compteur < SPIN_SpinEntier..BorneMin ALORS
    	SAI_compteur = SPIN_SpinEntier..BorneMin
    FIN
    Plus besoin de précisé "ValeurAffiché" du coup.


    Sinon j’aurai voulu qu'en tapant sur la touche "Entrer" sa me sorte du champs car je suis obligé de cliquer ailleurs pour que mon code s’exécute. Mais c'est vraiment un détails, le résultat rechercher est la et je t'en remercie.

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 346
    Points : 3 867
    Points
    3 867
    Par défaut
    Pour la présence de ces propriétés, je ne sais pas trop non plus, à part le fait d'y inscrire des valeurs sans avoir à utiliser des variables ou constantes.

    Pour la sortie du champ de saisie par Tab ou Entrée, je ne rencontre pas de problème, si je tape 20, puis fais Entrée, j'ai 15 qui s'affiche.

    Tu as bien mis ce code dans l'évènement de sortie du champs de saisie ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI SAI_SansNom1 > SPIN_SansNom1..BorneMax ALORS
    	SAI_SansNom1 = SPIN_SansNom1..BorneMax
    FIN

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    Oui oui je l'est ecrit en commentaire. Tab, clic ailleurs, valider sa marche mais pas entrée. Bon rien d'important de toute maniere

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 91
    Points : 70
    Points
    70
    Par défaut
    Je vient de remarquer quelque chose et j'ai trouver une autre solution à mon problème initial. Ne sait-on jamais, sa pourrait aider quelqu'un.

    J'ai vu qu'on avez la possibilité d'ajouter des événements en plus de ceux qui sont afficher par défaut (je trouver aussi que 3 événements pour un champs c’était peu comparé à d'autre langages).

    Ainsi, avec le code de base mais avec l’événement "A chaque fois qu'une touche est relâchée" il n'y a plus de problème, le traitement ce fait avant l'apparition de la bulle et on pourrait faire le traitement sur un champs qui ne possède pas de SPIN.

    Bonne journée

  11. #11
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 346
    Points : 3 867
    Points
    3 867
    Par défaut
    Intéressant mais malheureusement, l'infobulle apparaît encore malgré que le chiffre saisi soit compris entre 0 et 15.

    En tout cas, je confirme que la valeur est bien modifiée avant l'apparition de l'infobulle.

    Edit : Désolé, j'avais inversé les valeurs des bornes donc ça marche

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

Discussions similaires

  1. Date de modification d'un champs
    Par Samish dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/09/2005, 12h34
  2. Réponses: 9
    Dernier message: 22/06/2005, 08h45
  3. Modification d'un champs texte
    Par shinobi dans le forum Access
    Réponses: 2
    Dernier message: 15/06/2005, 10h05
  4. empêcher la modification d'un champ
    Par shurized dans le forum Oracle
    Réponses: 29
    Dernier message: 30/08/2004, 18h25
  5. DBNavigator, requete SQL et modif d'un champ
    Par TieumB dans le forum C++Builder
    Réponses: 9
    Dernier message: 27/01/2004, 08h50

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