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 :

Echange entre une popup et un module


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Echange entre une popup et un module
    Bonjour,

    J'aimerai envoyer des données de ma popup vers mon module qui est à l'origine de l'ouverture de la popup.
    Par exemple vers un TextInput situé dans le module.

    Pour communiquer vers l'application aucun probleme avec parentApplication. Il y aurait pas une "fonction magique" comme ça pour communiqué avec mon module? Sinon, comment faire? Que dois-je mettre dans ma fonction "sendMessageToModule()" ?

    Fichier application popup_module.mxml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    	<mx:ModuleLoader id="module" url="monModule.swf"> </mx:ModuleLoader>
    </mx:Application>
    Fichier du module monModule.mxml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" backgroundColor="#20B640">
     
    	<mx:Script>
    		<![CDATA[
    			import mx.managers.PopUpManager;
    			// Ouvrir popup
    			public function openPopUp():void
    			{
    				var objPopUp:maPopup = maPopup(PopUpManager.createPopUp(this,maPopup, true));
    			}
    		]]>
    	</mx:Script>
     
    	<mx:Label x="48" y="42" text="Message :"/>
    	<mx:TextInput x="120" y="40" id="txt_mod_msg"/>
    	<mx:Button x="120" y="92" label="Ouvrir PopUp" id="btn_open_popup" click="openPopUp()"/>	
    </mx:Module>
    Fichier de mon popup maPopup.mxml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="288" height="188" 
    				title="Ma PopUp" showCloseButton="true" close="closePopup()">
     
    	<mx:Script>
    		<![CDATA[
    			import mx.managers.PopUpManager;
    			public function closePopup():void
    			{
    				PopUpManager.removePopUp(this);
    			}
     
    			public function sendMessageToModule():void
    			{
    				//txt_mod_msg.txt = txt_send_msg.text;
    			}
    		]]>
    	</mx:Script>
     
    	<mx:Label x="36.5" y="22" text="Message à envoyer au module" width="195"/>
    	<mx:TextInput x="54" y="48" id="txt_send_msg"/>
    	<mx:Button x="89" y="93" label="Envoyer" id="btn_envoyer" click="sendMessageToModule()"/>
    </mx:TitleWindow>
    Merci d'avance.

  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
    La fonction "magique" - terme qui devrait à mon avis être exclus du vocabulaire des développeurs - c'est tout simplement apprendre comment utiliser les événements !

    Dans ton module tu ajoutes un "listener" sur un type d'événement particuliers et dans ton popup tu "dispatch" cet événement.

    Tes "messages" sont donc en Flex des événements.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jylaxx Voir le message
    La fonction "magique" - terme qui devrait à mon avis être exclus du vocabulaire des développeurs - c'est tout simplement apprendre comment utiliser les événements !

    Dans ton module tu ajoutes un "listener" sur un type d'événement particuliers et dans ton popup tu "dispatch" cet événement.

    Tes "messages" sont donc en Flex des événements.
    J'ai créer une classe evenement perso, chargé de contenir le message a transmettre

    Fichier MsgEvent.as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    package org.events
    {
    	import flash.events.Event;
     
    	public class MsgEvent extends Event
    	{	
    		public static const ID_SUBMITTED_RESULT:String = "idSubmittedResult";
       		public static const ID_SUBMITTED_FAILURE:String = "idSubmittedFailure";
     
       		private var _message:String;
     
    		public function MsgEvent(monMessage:String, type:String, bubbles:Boolean=false, cancelable:Boolean=false)
    		{
    			super(type, bubbles, cancelable);
    			_message = monMessage;
    		}
     
       		public function get message():String
       		{
       			return _message;
       		}
     
      	 	public function set message(value:String):void
      	 	{	
      	 		_message = value;
      	 	}
     
    	}
    }
    et j'ai mis le code suivant dans mes deux autres fichier mxml

    Fichier maPopup.mxml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="288" height="188" 
    				title="Ma PopUp" showCloseButton="true" close="closePopup()">
     
    	<mx:Script>
    		<![CDATA[
    			import org.events.MsgEvent;
    			import mx.managers.PopUpManager;
     
    			public function closePopup():void
    			{
    				PopUpManager.removePopUp(this);
    			}
     
    			public function sendMessageToModule():void
    			{
    				// Message a transmettre au module
    				var monMessage:String = txt_send_msg.text;
     
    				// création d'un nouvel event (MsgEvent)
    				var evt:MsgEvent = new MsgEvent(monMessage, MsgEvent.ID_SUBMITTED_RESULT);
     
    				// on dispatch l'event
    				dispatchEvent(evt);
     
    				// Fermeture de la popup
    				closePopup();
    			}
    		]]>
    	</mx:Script>
     
    	<mx:Label x="36.5" y="22" text="Message à envoyer au module" width="195"/>
    	<mx:TextInput x="54" y="48" id="txt_send_msg"/>
    	<mx:Button x="89" y="93" label="Envoyer" id="btn_envoyer" click="sendMessageToModule()"/>
    </mx:TitleWindow>
    Fichier monModule.mxml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" backgroundColor="#20B640">
     
    	<mx:Script>
    		<![CDATA[
    			import org.events.MsgEvent;
    			import mx.managers.PopUpManager;
     
    			// Ouvrir popup
    			public function openPopUp():void
    			{
    				var objPopUp:maPopup = maPopup(PopUpManager.createPopUp(this,maPopup, true));
    			}
     
    			public function initEcouteur():void
    			{
    				txt_mod_msg.addEventListener(MsgEvent.ID_SUBMITTED_RESULT, displayMsg);
    			}
     
    			public function displayMsg(e:MsgEvent):void
    			{
    				txt_mod_msg.text = String(e.message);
    			}
     
    		]]>
    	</mx:Script>
     
    	<mx:Label x="48" y="42" text="Message :"/>
    	<mx:TextInput x="120" y="40" id="txt_mod_msg" creationComplete="initEcouteur();"/>
    	<mx:Button x="120" y="92" label="Ouvrir PopUp" id="btn_open_popup" click="openPopUp()"/>	
    </mx:Module>
    Mais rien ne se passe le champ "txt_mod_msg" se remplit pas dans le module.

  4. #4
    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,

    Je ne sais pas si c'est possible d'abonner un TextInput à un évènement qu'il ne gère pas. Je te suggèrerai plutôt de gérer ton évènement au niveau de ton module. Tu ajoutes dans ton module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <mx:Metadata>
        [Event(name="messageSend", type="org.events.MsgEvent")]
    </mx:Metadata>
    Je crois que c'est tout.
    Par contre, je n'ai pas de FlexBuilder d'installer pour tester alors il se pourrait qu'il y ait des fautes de frappe. Ce que je te donne c'est le principe à appliquer.

  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
    C'est la popup qui doit écouter !

    Comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	public function openPopUp():void
    	{
    		var objPopUp:maPopup = maPopup(PopUpManager.createPopUp(this,maPopup, true));
    		objPopUp.addEventListener(MsgEvent.ID_SUBMITTED_RESULT, displayMsg);
    	}
    initEcouteur est inutile !


    (Rappel: les classes débutent par une majuscule...)

  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
    C'est la popup qui doit écouter !
    Tout à fait
    Merci jylaxx, je résonnais à l'envers.

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

Discussions similaires

  1. Echanges entre une application et un service
    Par maqfab dans le forum C#
    Réponses: 1
    Dernier message: 16/11/2011, 08h41
  2. Réponses: 3
    Dernier message: 02/06/2008, 16h13
  3. Réponses: 6
    Dernier message: 02/12/2007, 10h30
  4. Dialogue entre une page et sa popup
    Par chti_vince dans le forum ASP.NET
    Réponses: 3
    Dernier message: 28/06/2007, 09h25
  5. [VB.NET]Ma Form entre une toplevel Form et une topMost popup
    Par jazz matazz dans le forum Windows Forms
    Réponses: 15
    Dernier message: 28/02/2006, 14h51

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