Um outro problem que enfrentei, foi o seguinte:
tinha um campo numérico no banco e quando trazia estes dados para o DataGrid ele o ordenava como string, conforme abaixo:
1
11
12
2
22
3
33
333
Para resolver isso existe uma função no flex "sortCompareFunction", utilize a função abaixo:
private function numberSortFunction(obj1:Object, obj2:Object):int
{
var n1: Number = Number(obj1["campo_que_deseja_ordenar"]) ;
var n2: Number = Number(obj2["campo_que_deseja_ordenar"]) ;
if( n1 < n2 ) {
return -1;
}
else if( n1 > n2 )
{
return 1;
}
return 0;
}
Depois na coluna do grid que deseja ordenar, coloque, conforme abaixo:
<mx:DataGridColumn sortCompareFunction="numberSortFunction" width="450" headerText="Parent" dataField="campo_que_deseja_ordenar"/>
Pronto. Agora o sistema ordenará correto: 1,2,3.....
Pesquisar este blog
segunda-feira, 29 de março de 2010
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.
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.
Gauge Free em Flex
Baixem o único Gauge Free para Flex, no endereço do Igor Musardo:
http://igormusardo.com.br/2008/09/25/adobe-flex-grafico-de-velocimetro-gauge/
http://igormusardo.com.br/2008/09/25/adobe-flex-grafico-de-velocimetro-gauge/
Assinar:
Postagens (Atom)