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 :

Formatage d'un champ


Sujet :

WinDev

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut Formatage d'un champ
    Bonjour,

    Je créé une fenêtre de saisie et j'ai un champ dont je souhaiterais que les utilisateurs le saisissent dans le format suivant :

    32+6

    32 représentant les semaines et 6 les jours.

    Sachant que je voudrais que le + s'affiche en automatique après la saisie des 2 premiers chiffres
    De plus pour éviter toute source d'erreur, je cherche à mettre un contrôle sur le dernier chiffre (6) pour qu'il soit compris entre 0 et 6 (ces 2 chiffres inclus).

    Quelqu'un peut-il me donner un coup de main ?
    J'ai fait pas mal de test mais sans résultat pour le moment.
    Merci
    Cdt

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 328
    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 328
    Points : 3 841
    Points
    3 841
    Par défaut
    Salut,

    Regarde du côté de la propriété ..MasqueSaisie et des expressions régulières, je pense que ça devrait t'aider.

  3. #3
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Bonjour,

    En plus de l'excellent conseil de Lo², tu devras programmer l'ajout du + dans le code de modification de ton champ. Si tu utilises ce champs plus d'une fois, je te conseille de créer un modèle pour garder le code à un seul endroit.
    «Un problème bien défini est un problème à moitié résolu.»

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Bonjour klbsjpolp et Lo²,

    Merci pour vos conseils.
    Effectivement l'index ..MasqueSaisie me paraît adéquate.
    Il ne me reste plus qu'à l'analyser et essayer le code.
    Cdt

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    J'ai fait les tests par rapport au mot clé ..MasqueSaisie et le masque qui me permet d'afficher le résultat attendu est : MasqueSaisie(champ) = "99+9"

    En revanche, comment et dois-je mettre un code pour contrôler que les 2 premiers 9 correspondent aux nombres de 20 à 42 et le 9 après le plus est un chiffre compris de 1 à 6 ?
    Est-ce possible ?

    J'ai également regardé le masque "regexp: ([0-9]{0,4}......"
    A quoi correspond le 0 de {0,4} ?

    Merci de vos conseils.
    Cdt

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 328
    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 328
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dans l'initialisation du champ de saisie (ou ailleurs, c'est comme tu veux) :
    Saisie1..MasqueSaisie = "regexp:[20-42+]{0,3}[1-6]{0,1}"
    Ca ne marche pas totalement, mais limite quand même les erreurs de saisie.
    Pour le "0", j'avoue ne pas savoir

  7. #7
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 328
    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 328
    Points : 3 841
    Points
    3 841
    Par défaut
    Et aussi, le masque que tu proposes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Saisie1..MasqueSaisie = "99+9"
    m'a l'air mieux, plus simple en tout cas.

    Pour vérifier la validité de la saisie, en sortie de champ, tu peux tester de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SI Val(ExtraitChaine(MoiMeme, 1, "+") < 20 _OU_ Val(ExtraitChaine(MoiMeme, 1, "+") > 42 ALORS
    //Erreur de saisie
    FIN
    SI Val(ExtraitChaine(MoiMeme, 2, "+") < 1 _OU_ Val(ExtraitChaine(MoiMeme, 2, "+") > 6 ALORS
    //Erreur de saisie
    FIN

  8. #8
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Bonjour Lo²,

    Merci pour ton aide et tes explications.
    Je vais tester ces codes et te tiendrai au courant.
    Cdt de Nouméa

  9. #9
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Re Lo²,

    Ton aide a été précieuse sur ce coup.
    J'ai gardé mon masque de saisie et j'y ai ajouté ton contrôle

    SI Val(ExtraitChaine(MoiMeme, 1, "+") ....

    C'est exactement ce que je souhaitais.

    Bug suivant dans mon dev
    :

    J'ai 1 interrupteur qui, si je le sélectionne, me rend visible une combo à côté dont les infos sont issues d'un fichier et dont je fais une RepriseSaisie sur cette dernière.
    Cette combo est en saisie obligatoire.
    Jusque là tout va bien.

    En revanche, si je me suis trompé en cliquant sur mon interrupteur, je décoche celui-ci mais impossible de supprimer l'élément sélectionner dans ma combo.

    Je pense qu'il y aurait un code à mettre sur mon interrupteur qui effacerait les données de ma combo si mon interrupteur = 0.
    J'ai essayé plein de possibilité mais je sèche.

    As-tu une idée ?
    Merci et à demain.
    Cdt

  10. #10
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 328
    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 328
    Points : 3 841
    Points
    3 841
    Par défaut
    Je dirais ListeSelectMoins(..) ou alors gérer le cas lorsque l'interrupteur est à Faux, pour ne pas prendre en compte l'élement sélectionné de la combo.

  11. #11
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Bonjour Lo²,

    J'ai suivi tes conseils et j'ai utilisé le ListeSectMoins pour effacer le contenu de ma combo : le résultat est parfait.
    J'ai donc tapé le code suivant :

    SI SEL_NOM = 0 ALORS
    ListeSelectMoins(MaCOMBO)
    FIN

    En revanche, j'ai essayé de mettre après le ListeSelectMoins le code ChampInvisble(MaCOMBO) mais j'ai un message d'erreur comme quoi le 0 n'est pas reconnu pour ce code.

    Comment faire pour masquer ma combo si je désélectionne mon interrupteur ?

    Autre petite question :
    Sur mon bouton 'VALIDER' j'ai mis des codes de contrôles sur certains champs dont la saisie est obligatoire avant enregistrement.
    Sur les champs de saisi, j'arrive à remettre (maintenant) le curseur dans le champ en erreur mais comment faire pour les champs sélecteurs ?
    Je mets bien un message d'info mais je souhaiterais également que de visu, l'utilisateur sache où se trouve ce champ.
    J'avais l'idée de faire clignoter le libellé de la liste des sélecteurs.
    Est-ce possible ?

    Encore merci de ton aide.
    Cdt

  12. #12
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 328
    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 328
    Points : 3 841
    Points
    3 841
    Par défaut
    Pour la première question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maCombo..Visible = Faux
    PS : Surpris de ta question puisque plus haut tu dis que tu rends visible ta combo quand tu sélectionnes ton interrupteur.

    Pour le deuxième, en effet, ce n'est pas possible.
    La méthode que j'utilise et qui a plu aux clients, est de faire apparaître une petite image (une petite bulle rouge pastel dans mon cas) devant les champs obligatoires qui ne correspondent pas aux critères de validation.

  13. #13
    Membre habitué
    Inscrit en
    Décembre 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 273
    Points : 126
    Points
    126
    Par défaut
    Bonjour Lo²,

    Pendant que tu me répondais j'ai envoyé une question sur le forum pour le libellé clignotant : désolé !

    Je te cite ...
    PS : Surpris de ta question puisque plus haut tu dis que tu rends visible ta combo quand tu sélectionnes ton interrupteur.

    Si je veux rendre à nouveau mon champ invisible, c'est que j'ai fait des tests et si je décoche effectivement mon interrupteur, la combo est bien mise à blanc mais à tout moment l'utilisateur peux cliquer dans la combo et comme elle est en saisie obligatoire, pas moyen de sortir sans sélectionner une valeur.
    De ce fait, il y aurait incohérence dans mon appli sur l'interrupteur à 0 et une valeur dans ma combo.
    Le fait de la rendre invisible si je décoche mon interrupteur évitera cela.
    Merci pour ton code, je vais le tester de suite.
    @+

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

Discussions similaires

  1. Formatage d'un champ de publipostage en $
    Par Flaguette dans le forum Word
    Réponses: 8
    Dernier message: 31/05/2008, 00h10
  2. Formatage d'un champ de type datetime
    Par elspliffo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/11/2007, 13h58
  3. Formatage spécifique de champs
    Par elkhy777 dans le forum Access
    Réponses: 4
    Dernier message: 08/01/2007, 06h58
  4. [VB.Net] Formatage d'un champ DateTime d'un DataGrid
    Par Jerem76 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 29/07/2005, 09h44
  5. Formatage d'un champ numérique
    Par portu dans le forum Bases de données
    Réponses: 8
    Dernier message: 07/07/2004, 15h04

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