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

Flex Discussion :

Comment fonctionne la validation d'un NumericStepper ?


Sujet :

Flex

  1. #1
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut Comment fonctionne la validation d'un NumericStepper ?
    Bonjour à tous.

    J'aimerais redéfinir quelques méthodes d'un NumericStepper pour qu'il fonctionne mieux mais pour cela, il me faut comprendre la succession des étapes qui se situent entre le moment où l'on est en train de saisir manuellement une valeur et le moment où l'on clique sur un autre objet (un bouton par exemple).

    J'imagine que lorsque le NumericStepper perd le focus, il fait appel à un validateur qui, au besoin, reformate l'entrée avant de la valider mais aucune certitude.

    Comment puis-je m'y prendre pour en apprendre plus sur le comportement de ce composant à ce moment là ?
    Merci pour vos réponses !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Peut-être en regardant le code du composant...

  3. #3
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    C'est ce que je suis en train de faire. D'ailleurs j'y ai trouvé deux trois fonctions qui s'y rapportent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    checkValidValue
    checkRange
    takeValueFromTextField
    focusOutHandler
    inputField_focusOutHandler
    Maintenant reste à comprendre comment tous ca fonctionne !
    Ça ne devrait plus me prendre beaucoup de temps, je vous tiens au courant

  4. #4
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    En fin de compte c'est plus difficile que je pensais...
    Si j'utilise overide sur certaines fonctions, il y a des erreurs parce qu'elles utilisent des variables inaccessibles.
    Et si je copie/colle tout le contenu de la classe NumericStepper.as dans ma classe perso, il y a des références qui ne correspondent pas. J'ai bien essayé d'arranger cela mais sans succès.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Pour info les membres de type mx_internal sont accessibles si tu rajoutes dans ta classe dérivée :

    import mx.core.mx_internal;

    use namespace mx_internal;

  6. #6
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Super merci pour le tuyau !

    Du coup j'arrive à compiler et à copier des fonctions pour les modifier à ma guise
    Par contre, j'ai mis des alertes dans les fonctions que j'ai modifiées et on dirait qu'elles ne sont jamais appelées.
    Peut être y a-t-il quelque chose à savoir pour surcharger une fonction ?

    Pour l'instant je procède comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        private function takeValueFromTextField(trigger:Event = null):void
        {
            Alert.show("test");
            var inputValue:Number = Number(inputField.text);
            if ((inputValue != lastValue &&
                (Math.abs(inputValue - lastValue) >= 0.000001 || isNaN(inputValue))) || 
                inputField.text == "")
            {
                var newValue:Number = checkValidValue(Number(inputField.text));
                inputField.text = newValue.toString();
                setValue(newValue, trigger != null, trigger);
            }
        }
    Si je met le mot clé override devant private le compilateur me dit :
    "La méthode marquée override doit neutraliser une autre méthode" et c'est justement ça que j'essaye de faire

    EDIT : Et si je met [override] devant il n'y a pas d'erreur mais l'alerte ne s'affiche pas.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Le problème c'est que cette méthode est private.
    idem pour checkValidValue et la plupart des méthodes de cette classe !!

    Elle n'est donc pas accessible à ta classe dérivée!

    C'est souvent agaçant de se retrouver devant un problème simple qui pourrait être réglé facilement si les méthodes private étaient soit protégées soit mx_internal. J'ai déjà eu ce type de situation pour corriger des bugs du framework. Devoir dupliquer le code dans un nouveau composant n'est pas très satisfaisant !

  8. #8
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    Oui et j'ai lu une solution qui consisterait à créer un double de la classe (je l'ai appelée NumericStepper2.as et j'ai mis ses méthodes en protected.

    Ça pourrait régler le problème mais le souci c'est qu'elle n'est pas disponible dans l'ide peut être qu'il faut lui dire qu'elle existe mais je ne sais pas trop comment m'y prendre...

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    A partir du moment où ta classe est dans les "source path" du projet ton composant apparait dans l'onglet Custom des composants en mode Design et sinon les classes correspondantes apparaissent dans l'autocomplétion du code.

    Donc aucun problème pour utiliser tes propres classes dans l'IDE.

  10. #10
    Membre éclairé Avatar de ToniConti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2009
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2009
    Messages : 245
    Par défaut
    C'est juste. Mais c'est à contre cœur que j'ai du faire autrement. Après toutes ces manipulations, il n'y avait plus d'erreur, le code de ma nouvelle classe était identique à celui de la classe d'origine (seul les private sont devenu protected) et pourtant mon composant n'avait plus rien d'un NumericStepper. Il ressemblait plutôt à un TextInput un peu plus grand et avec un contrôle de saisie rudimentaire.

    C'est pas grave j'y reviendrai surement une prochaine fois...
    En attendant j'ai mis un TextInput et je contrôle la saisie de l'utilisateur. C'est quand même plus simple

    Bonne fin de journée et merci pour ton aide

Discussions similaires

  1. [JSF] comment fonctionne <h:message> ?
    Par anitshka dans le forum JSF
    Réponses: 5
    Dernier message: 29/06/2005, 17h36
  2. Comment fonctionne TXmlDocumment ????
    Par almisuifre dans le forum C++Builder
    Réponses: 8
    Dernier message: 18/02/2005, 12h54
  3. comment fonctionne une interface graphique???
    Par elekis dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/10/2004, 23h10
  4. Comment fonctionne le ClassExplorer ?
    Par borisd dans le forum C++Builder
    Réponses: 7
    Dernier message: 30/09/2004, 17h44
  5. Comment fonctionne le CVS ?
    Par mathieu dans le forum CVS
    Réponses: 6
    Dernier message: 23/03/2004, 11h26

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