Aide - Recherche - Membres - Calendrier
Version complète : Liaison entre une application et 2 composants MXML
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > Flex
Tannoy
Bonjour,

J'ai une application Flex qui fait appel à 2 composants MXML :

CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:test="vues.*" layout="absolute">
    <mx:VBox x="10" y="10" width="100%" height="100%">
        <test:vueSaisie>
        </test:vueSaisie>
        <test:vueAffichage>
        </test:vueAffichage>
    </mx:VBox>
    
</mx:Application>


Dans le premier composant, j'ai un TextInput et un Button :

CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
    <mx:Script>
        <![CDATA[
            
        ]]>
    </mx:Script>
    
    <mx:Form x="10" y="10">
        <mx:FormItem label="Saisie :">
            <mx:TextInput id="txtSaisie"/>
        </mx:FormItem>
        <mx:Button label="afficher" id="btAfficher" click=""/>
    </mx:Form>
    
</mx:Canvas>


Dans le second composant, j'ai un TextArea :

CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
    <mx:TextArea x="10" y="10" width="335" height="258" id="txtAffichage"/>
    
</mx:Canvas>


Lorsque je clique sur le bouton, je souhaite renseigner le TextArea avec ce que j'ai saisi dans le TextInput et là je bloque.

Merci d'avance pour votre aide.
Tonic
Salut,

plusieurs possibilités :

1 ) passer une référence de "vueAffichage" à "vueSaisie". Et dans ton mxml "vueAffichage", faire une fonction public qui remplirait ton textarea.
Donc sur click de ton boutton dans "vueSaisie", tu as accès à ton objet vueAffichage, qui te permet donc d'appeler ta fonction public.

2 ) dispatcher un évènement (une classe étendant Event, avec possibilité de contenir une (des) variable(s)), contenant le texte de ton TI, de ton objet "vueSaisie" vers ton application. Et ensuite de application, tu as accès à ton objet "vueAffichage".

3 ) etc.
Tannoy
Merci

Parmi ces 2 possibilités, quelle est celle qui est préconisée ? et pourquoi ?

Tannoy
Bonjour,

J'ai du mal à mettre en oeuvre la première solution. Quelqu'un pourrait-il me donner un début de code pour que je puisse bien démarrer ?

merci d'avance

wink.gif
Tonic
Salut,

je ne sais pas si une solution est meilleure que l'autre.

Perso, j'aurrai adopté pour la 2de, avec dispatchement d'évènement.

Pour ton problème, peut on voir le code que tu as essayé de mettre en oeuvre?
Tannoy
Le composant pour la saisie

CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
    <mx:Script>
        <![CDATA[
            import vues.vueAffichage;
            private var laVue:vueAffichage;
            
            private function clicHandler(evt:MouseEvent):void
            {
                laVue.affiche(txtSaisie.text)
            }
        ]]>
    </mx:Script>
    
    <mx:Form x="10" y="10">
        <mx:FormItem label="Saisie :">
            <mx:TextInput id="txtSaisie"/>
        </mx:FormItem>
        <mx:Button label="afficher" id="btAfficher" click="clicHandler(event)"/>
    </mx:Form>
    
</mx:Canvas>


le composant pour l'affichage :

CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">

    <mx:Script>
        <![CDATA[
            public function affiche(texte:String):void
            {
                txtAffichage.text = texte;
            }
        ]]>
    </mx:Script>

    <mx:TextArea x="10" y="10" width="335" height="258" id="txtAffichage"/>
    
</mx:Canvas>


merci d'avance
Tonic
Tu peux par exemple affecter ta référence comme ceci :

CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:test="vues.*" layout="absolute" creationComplete="init()">
    <mx:VBox x="10" y="10" width="100%" height="100%">
        <test:vueSaisie>
        </test:vueSaisie>
        <test:vueAffichage>
        </test:vueAffichage>
    </mx:VBox>
      <mx:Script>
        <![CDATA[
            private function init():void
            {
                vueSaisie.setRefVueAffichage(vueSaisie);
            }
        ]]>
    </mx:Script>
</mx:Application>


CODE
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
    <mx:Script>
        <![CDATA[
            import vues.vueAffichage;
            private var laVue:vueAffichage;
            
            public function setRefVueAffichage(vueSaisie : vueAffichage):void
            {
                 laVue = vueSaisie;    

            }

            private function clicHandler(evt:MouseEvent):void
            {
                laVue.affiche(txtSaisie.text)
            }
        ]]>
    </mx:Script>
    
    <mx:Form x="10" y="10">
        <mx:FormItem label="Saisie :">
            <mx:TextInput id="txtSaisie"/>
        </mx:FormItem>
        <mx:Button label="afficher" id="btAfficher" click="clicHandler(event)"/>
    </mx:Form>
    
</mx:Canvas>
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.