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 :

setter MXML/AS


Sujet :

Flex

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut setter MXML/AS
    Bonjour,

    Je développe une appli Flex et je me retrouve face à un problème "bizarre" :
    J'ai une fenetre perso (qui étend TitleWindow) dans laquelle je set une propriété à travers l'attibut adéquat dans la balise <TitleWindow>.
    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <TitleWindow maProp="NON" [...] >
    Or a un moment je crée cette fenetre en AS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var fenetre:MaFenetre = new MaFenetre();
    Et je me rends compte que tant que la fenêtre n'est pas affichée (via le PopupManager par exemple) et bien l'affectation n'a pas lieu !
    Ce qui veut dire que si "maProp" vaut "OUI" par défaut et que j'affecte "NON" comme dans l'exemple ci-dessus, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var fenetre:MaFenetre = new MaFenetre();
    [...]
    Je vois dans le débugueur que maProp vaut "OUI"

    Mais si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var fenetre:MaFenetre = new MaFenetre();
    PopupManager.add(fenetre,mere);
    [...]
    Alors là il passe bien dans le setter de la propriété et donc maProp vaut bien "NON".


    Y a t-il un moyen de contourner ce problème ?

  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
    Alors juste pour commencer je voudrais faire une remarque. Normalement pour créer un TitleWindows, tu dois utiliser la méthode createPopUp du PopUpManager. Pourquoi tu ne l'as pas utilisé ? Peut être que ton problème vient de là.

    Bien évidemment createPopUp affiche la pop up en plus de la créer si mes souvenirs sont bons. Dans ce cas il faudrait peut être que tu revoies le moment de création de ta pop up.

    ++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Mais en fait le truc c'est que je ne veux pas l'afficher, je donnais l'exemple du addPopup pour montrer que l'affectation de ma propriété ne se fait qu'à l'affichage et non à la création de l'objet.

    En gros je souhaites accèder en AS à un propritété (un attribut) de ma fenetre définie en MXML.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Par défaut
    Pas sûr de bien comprendre... En fait la value de ta propriété maProp est à OUI tant que le manager n'a pas ajouté ton objet "ma fenêtre" c'est ça ?

    Peux-tu mettre ton vrai code ? car TitleWindow ne possède pas de propriété maProp

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    En effet c'est bien ça.

    Bon alors avec un code proche du réel :

    Soit un objet AS TitleWindowDroit héritant de TitleWindow.
    Je rajoute dans ce nouvel objet la propriété droitConsultation initialisée à "O".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var droitConsultation:String = "O";
    Pour l'une de mes fenêtres je souhaite faire ceci (cas un peu idiot mais pouvant arriver : personne ne peut consulter cette fenêtre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <customcompAS:TitleWindowDroit droitConsultation="N">
    </customcompAS>
    Enfin, j'ai un lien vers cette TitleWindow customisée qui ne doit s'afficher (le lien) QUE si droitConsultation est à "O".

    Donc en gros au moment de construire le lien je veux regarder si la propriété de ma fenetre est à "O" ou à "N". Pour ça je construit l'objet TitleWindowDroit en AS et je veux faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var maFenetre:TitleWindowDroit = new TitleWindowDroit();
    if(maFenetre.droitConsultation == "O"){
        //Afficher le lien vers ma fenetre
       //Autres opérations
    }
    else{
        //Ne pas afficher le lien
    }

    Le problème c'est que l'affectation de la variable droitConsultation avec la valeur que j'ai indiqué dans le MXML ne se fait pas lorsque je construis l'objet en AS. Ce qui fait que lors de mon test sur la propriété et ben j'ai toujours la valeur par défaut et non la valeur affectée.

    Ensuite, j'ai fais des "expériences" et je me suis aperçu que l'affectation ne se faisait que si l'on faisait afficher la fenêtre. Or en aucun cas je ne veux la faire afficher. D'où mon problème.

  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
    Enfin, j'ai un lien vers cette TitleWindow customisée qui ne doit s'afficher (le lien) QUE si droitConsultation est à "O".
    Pourquoi tu ne mets pas le lien en disabled plutôt ?

    Alors soit je n'ai compris, soit tu veux faire trop compliquer

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Oui je veux bien mais je dois quand même effectuer le test sur droitConsultation. Dans ce cas le lien doit être disabled si droitConsultation vaut "N"... mais comme l'affectation ne se fait pas, je suis bloqué

  8. #8
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    ce que pointe ellene c'est le fonctionnement plus globale de ta navigation
    à priori pas besoin d'étendre le composant TitleWindow avec ta propriété droitConsultation , il suffirait de modifier le booleen enable de ton lien et ton fonctionnement reste identique et cohérent

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 319
    Par défaut
    Hmmm en fait il a besoin d'initialiser une propriété une variable à faux ou vrai en fonction de certains cas... je crois, vu ton code, comprendre sur quelle problématique métier tu travaille

    En fait, ton problème c'est le cycle de vie des composants Flex... Un des soucis avec Flex, c'est que même si tu crois avoir construit un objet en le déclarant en mxml, il est construit mais pas totalement (uniquement à l'aide du constructeur par défaut). En fait, pour des raisons de performances, les composants ne sont pas tous construits entièrement.

    Dasn ton code, tu veux initialiser une propriété par Binding, c'est ça le souci pour moi

    Je te conseillerais donc de passer par de l'AS3 pour construire ton composant, plutôt que par du Flex.

    Tiens moi au courant si ça marche !

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <mx:LinkButton label="Ouvre mon titlewindow" enabled={droitConsultation == 'O'}
                click="Alert.show('Mon titlewindow est ouvert');"/>

    C'est bien ça que tu voudrais ? Enfin c'est ce que j'ai compris de ce que tu voulais en fait.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Citation Envoyé par Kantizbak Voir le message
    Hmmm en fait il a besoin d'initialiser une propriété une variable à faux ou vrai en fonction de certains cas... je crois, vu ton code, comprendre sur quelle problématique métier tu travaille

    En fait, ton problème c'est le cycle de vie des composants Flex... Un des soucis avec Flex, c'est que même si tu crois avoir construit un objet en le déclarant en mxml, il est construit mais pas totalement (uniquement à l'aide du constructeur par défaut). En fait, pour des raisons de performances, les composants ne sont pas tous construits entièrement.

    Dasn ton code, tu veux initialiser une propriété par Binding, c'est ça le souci pour moi

    Je te conseillerais donc de passer par de l'AS3 pour construire ton composant, plutôt que par du Flex.

    Tiens moi au courant si ça marche !
    Oui c'est ça, c'est pour la gestion des droits....

    Mais quand tu dis de passer par de l'AS pour construire mon composant, et bien c'est ce que je fais. Après c'est sûr que son utilisation passe par le côté Flex / MXML... ne serait-ce que pour ajouter d'autres éléments à l'intérieur. Si je faisais tout en AS, je crois que je me pendrais très vite

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Citation Envoyé par ellene Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <mx:LinkButton label="Ouvre mon titlewindow" enabled={droitConsultation == 'O'}
                click="Alert.show('Mon titlewindow est ouvert');"/>

    C'est bien ça que tu voudrais ? Enfin c'est ce que j'ai compris de ce que tu voulais en fait.
    Dans l'esprit c'est ça

  13. #13
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    comment affecte tu ta propriété droitConsultation sur ton composant perso?

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Dans le MXML, je l'affecte comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <customcompAS:TitleWindowDroit droitConsultation="N">
    </customcompAS>
    Sachant que dans ma classe TitleWindowDroit j'ai ceci (valeur par défaut):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var droitConsultation:String = "O";

  15. #15
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    ok, y'a t'il une contrainte fonctionnelle sur la proposition de ellene? ca me parait une solution plus simple.

    Sinon passe en debug mais Kantizbak t'as donné une piste si tu persiste dans ton TitleWindow perso

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 160
    Par défaut
    Ben en fait le problème est juste technique. Mon problème n'est un pas problème de "comment faire pour ouvrir ma fenêtre" mais pourquoi l'affectation ne se fait pas ?

    Si on prend la solution de Ellene :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <mx:LinkButton label="Ouvre mon titlewindow" enabled={droitConsultation == 'O'}
    click="Alert.show('Mon titlewindow est ouvert');"/>
    On voit dans le test pour établir la valeur de l'enabled ceci :
    droitConsultation == 'O'

    Or c'est justement ça qui ne marche pas. Moi je veux juste faire un test sur droitConsultation en prenant en compte l'éventuelle affectation de ce paramètre lors de l'utilisation du composant perso. Pour l'instant ce paramètre est toujours égal à "O" (valeur par défaut définie dans la classe AS du composant) même si j'ai mis "N" dans le MXML

  17. #17
    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
    Euh ... Je suis un peu perdue moi ...

    Je déroule les étapes de ma solution et tu me dis à quel moment j'ai faux :
    (car je crois que j'ai du louper qqch)

    1 - dans ton composant parent tu as un lien qui t'ouvres ton TitleWindows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <mx:LinkButton label="Ouvre mon titlewindow" enabled={droitConsultation == 'O'}
    click="ouvrir();"/>
    2 - Tu crées ta fonction ouvrir permettant donc d'ouvrir ton TitleWindow :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function ouvrir():void{
    var popup:MaPopUp=MaPopUp
    (PopUpManager.createPopUp( this, MaPopUp, true));
    // Tu mets ta valeur à ce moment là si tu en as besoin
    pop.droitConsultation = droitConsultation;
    }
    Et là ton affectation va fonctionner puisque tu es passé par createPopUp ... enfin j'espère ... et puis ta popup va être ouverte au bon moment puisque tu le fais au moment du clic. Ca ne te va pas ?

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Par défaut
    Je ne pense pas que cela marchera ellene car le LinkButton doit être enable/disable en fonction de la valeur dans la variable de la popup. Hors, tu déclanche la création de ce popup au click de ce LinkButton ... Donc, il faudrait pour celà que la valeur (que tu dois récupérer) soit déjà à 1 pour pouvoir cliquer dessus pour seulement la récupérer ... Ca cloche un peu ^^

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 10
    Par défaut
    Cependant, j'ai une question ... Cette fameuse valeur définie à l'intérieur même de la popup (qui, si j'ai bien compris sert à déterminer si il est possible de voir ou non la popup), ne peut-elle pas être récupérée autre part ? Dans le MXML de l'application principale, par exemple :-/ ?

  20. #20
    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 Juwau Voir le message
    Je ne pense pas que cela marchera ellene car le LinkButton doit être enable/disable en fonction de la valeur dans la variable de la popup. Hors, tu déclanche la création de ce popup au click de ce LinkButton ... Donc, il faudrait pour celà que la valeur (que tu dois récupérer) soit déjà à 1 pour pouvoir cliquer dessus pour seulement la récupérer ... Ca cloche un peu ^^
    Je crois que personne ne se comprend là . Fichman devrait revoir sa conception car je pense qu'il a voulu faire compliquer.

    Le LinkButton est dans l'application parent et tu affectes la variable dans le TitleWindow une fois le clic effectué.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB.NET] Génération automatique Property (getter / setter)
    Par Husqvarna dans le forum Windows Forms
    Réponses: 7
    Dernier message: 23/07/2020, 11h55
  2. [Info]générer automatiquement les getters / setters
    Par lr dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 01/02/2005, 10h14
  3. [Bean] Automatiser les appels de setters / getters
    Par shinchun dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 27/12/2004, 15h18
  4. SNMP (setter une variable???)
    Par racel dans le forum Développement
    Réponses: 2
    Dernier message: 07/06/2004, 11h48
  5. configuration getter & setter
    Par otb82 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 15/10/2003, 15h53

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