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 :

Paramètres de constructeur et MXML


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 71
    Par défaut Paramètres de constructeur et MXML
    Bonjour,

    je ne comprends pas un truc, j'essaye de créer un composant dérivé de l'objet ComboBox, le but étant d'afficher les années à partir d'une année de départ et le nombre souhaité, par exemple si je pars de l'année 2000 avec nombre souhaité = 2 j'aurais dans mon ComboBox les valeurs suivantes :

    - 2000
    - 2001
    - 2002

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class ComboBoxYear extends ComboBox
    {
       public var _Year_begin:uint;
       public var _Num_year:uint;
       private var ListYear:ArrayCollection;
     
       // Constructor
       public function ComboBoxYear(Year:uint,numy:uint)
      {
         ...
      }
     
    }
    Application mxml utilisant ce composant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    				xmlns:custom="components.*"
    				width="632"
    				height="715"
    				xmlns:local="*"
    				xmlns:comp="components.*"
    <comp:ComboBoxYear _Year_begin="2000" _Num_year="5"/>
     
    </mx:Application>
    Voilà pour le code, ça compile, pourtant à l'exécution j'ai l'erreur suivante Argument error #1063:Non-correspondance du nombre d'arguments sur components::ComboBoxYear(). 2 prévu(s), 0 détecté(s).

    Ok je comprends l'erreur mais comment passer des paramètres à mon constructeur ? J'ai fouillé sur le Net et apparemment une application mxml ne peut pas passer de paramètre à un constructeur, mais dans ce cas comment faire ? J'ai tenté avec un constructeur sans paramètre, juste en utilisant les variables publiques, mais le problème c'est en débogage dans le constructeur ces variables arrivent vides. Je coince.

    Merci pour votre aide

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Bonjour,

    Alors j'ai plusieurs remarques à te faire.

    1- Tu veux faire une série de combo box mais tu utilises une classe qui ne peut construire qu'un seul combo box. Il te faudrait choisir une autre classe pouvant générer plusieurs combo box comme un ListBase (il y a peut être mieux dans la documentation) par exemple qui te fournit la méthode addChild pour rajouter tes combo box.

    2 - Pour le constructeur tu as raison, il te faudrait des getter et setter sur tes propriétés.

    3 - Evite les _ pour les noms d'attributs public. Je te conseille de les mettre en privé puis de décrire les getter et setter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public var _numYear:uint;
     
    public function get numYear():uint{
                return _numYear
    ;
            }
     
            public function set numYear(value:uint):void{
                _numYear = value;
            }
    Puis d'utiliser dans ton MXML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <comp:ComboBoxYear yearBegin="2000" numYear="5"/>
    Ton constructeur sera vide mais les données seront complétées au moment du set.

    ++

  3. #3
    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
    mais le problème c'est en débogage dans le constructeur ces variables arrivent vides.
    ??? Dans le constructeur de quoi ? Si c'est dans le constructeur de ComboBoxYear c'est bien normal !!! Comment les variables d'instances pourraient être initialisées AVANT que l'instance soit créée ???


    Flûte je me suis fait doubler par ellene ! Un dimanche en plus !!!

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 71
    Par défaut
    Mais à vous deux, ok pour vos remarques, en revanche ellene pourquoi tu dis que je veux faire une série de combo box ?

    Mais à quelle moment je dois remplir ma variable ListYear (ArrayCollection) ?

    Merci pour votre aide.

  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
    Mais à quelle moment je dois remplir ma variable ListYear (ArrayCollection) ?
    Lorsque les paramètres qui influencent sa composition sont modifiés. Donc dans le settter des propriétés.

    En faisant ainsi l'inconvénient est que le ArrayCollection est calculé plus de fois que nécessaire. Idéalement il faut faire cette mise à jour dans le commitProperties.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    895
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 895
    Par défaut
    Citation Envoyé par tafkap Voir le message
    Mais à vous deux, ok pour vos remarques, en revanche ellene pourquoi tu dis que je veux faire une série de combo box ?
    Je n'ai peut être pas bien compris ton besoin.
    J'ai cru comprendre que tu voulais afficher une combo box par année. Ou alors c'est uniquement le label qui contient ces valeurs ? Si c'est le deuxième alors tu peux oublier ce que je t'ai dit sur les listes

    ++

  7. #7
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 71
    Par défaut
    Dans un seul ComboBox je souhaite sélectionner une année, ma question est relative à l'initialisation des années à fournir à l'utilisateur.

  8. #8
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Citation Envoyé par tafkap Voir le message
    Dans un seul ComboBox je souhaite sélectionner une année, ma question est relative à l'initialisation des années à fournir à l'utilisateur.
    Bonjour

    Perso, je composerais différement avec HTTPService.
    Disons que ce n'est qu'une autre alternative, si tant est qu'elle soit appropriée (php dispo).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <mx:HTTPService id="listeAnnee" url="script.php" method="POST">
         <mx:request xmlns="">
         <madate>{madate.text}</madate> //envoi de la variable année à traiter
         </mx:request>
         </mx:HTTPService>
    script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    print"<etat>\n";
    $suite = ($madate + 4);
    for ($madate; $madate <= $suite; $madate++) {
    print"<liste><madate>$madate</madate></liste>\n";
    }
    print"</etat>";
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mx:ComboBox dataProvider="{listeAnnee.lastResult.etat.liste}" labelField="madate" ...........

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/05/2010, 14h00
  2. Réponses: 1
    Dernier message: 21/12/2009, 18h03
  3. info sur les paramètres de constructeur
    Par guiyomh dans le forum C++
    Réponses: 5
    Dernier message: 24/06/2008, 19h38
  4. 2d paramètre du constructeur de wxFrame
    Par Mersenne dans le forum wxWidgets
    Réponses: 5
    Dernier message: 04/06/2007, 17h55
  5. [AS2] passer paramètre à un constructeur par attachMovie()
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 06/08/2005, 02h32

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