Pesquisar este blog

quinta-feira, 25 de março de 2010

Troca de informação entre componentes e Main no Flex - Utilizando TabNavigator

Uma das grandes dificuldades que tive, como iniciante em flex, foi passar um valor da tela principal (Main) para uma subtela (component) e vice-versa. No entanto vai ai a dica:

No meu caso eu tenho uma Main que contem um tabNavigator com vários components, conforme abaixo:



< Application xmlns:view="view.*" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >

<mx:TabNavigator id="nav">

<view:mes_corrente id="tab_mes_corrente" label="Mês Corrente" />

<view:acumulado id="tab_acumulado" label="Acumulado"/>

</mx:TabNavigator

</mx:Application>



Abaixo segue o componente, contido no TabNavigator.(Este componente está no caminho: src/view/mes_corrente.mxml)


<mx:Canvas name="mc">

<mx:Label id="lbl_titulo"/>

</mx:Canvas>


OK. Para passar um valor de dentro do Main para o componente "mes_corrente" o código fica assim:



<mx:Application creationComplete="ipassarValorParaComp()" xmlns:view="view.*"
        xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >

   <mx:Script>

       <![CDATA[

              private function passarValorParaComp():void
             {
                           tab_mes_corrente.lbl_titulo.text="Eu recebi este valor do Main";
             }
       ]]>

    <mx:TabNavigator id="nav">
                 <view:mes_corrente id="tab_mes_corrente" label="Mês Corrente" />
                 <view:acumulado id="tab_acumulado" label="Acumulado"/>
    </mx:TabNavigator>

</mx:Application>

Pronto. Quando rodar o sistema o label do component "mes_corrente" receberá o valor passado pelo Main.

Para passar ou alterar um valor no Main, basta fazer o seguinte:

Vamos alterar o label de uma aba do tabNavigator que está no Main.

<mx:Canvas name="mc">
       <mx:Script>
               <![CDATA[
                      private function mudaAba():void
                     {
                            Application.application.tab_mes_corrente.label="O component mudou meu nome";
                      }
                ]]>

       <mx:Label id="lbl_titulo"/>
     <mx:Button click="mudaAba()"/>
</mx:Canvas>


Pronto!!!
Talvez isso pareça simples para os animais em Flex, más para quem está iniciando é de grande vália.

Nenhum comentário:

Postar um comentário