Taí uma solução bem mais elegante ... =) Elvis Fernandes www.elvis.eti.br
2008/6/5 Ricardo Ramires <[EMAIL PROTECTED]>: > > Fiz um component para usar como itemrenderer para trocar as 4 imagens > de status da lista de usuarios de um chat onde usei um datagrid > "embedando" as imagens: > > <?xml version="1.0" encoding="utf-8"?> > <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" > horizontalAlign="center" > verticalAlign="middle" > implements="mx.controls.listClasses.IDropInListItemRenderer" > > > <mx:Script> > <![CDATA[ > > import mx.controls.dataGridClasses.DataGridListData; > import mx.events.FlexEvent; > import mx.controls.listClasses.BaseListData; > import > mx.controls.listClasses.IDropInListItemRenderer; > import mx.controls.listClasses.IListItemRenderer; > > private var _data:Object = null; > > > override public function set data(value:Object):void > { > _data = value; > invalidateProperties() > dispatchEvent(new > FlexEvent(FlexEvent.DATA_CHANGE)); > } > > [Bindable("dataChange")] > override public function get data():Object > { > return _data; > } > > > [Embed("assets/status_livre.png")] > private var livreIcon:Class; > > [Embed("assets/status_ocupado.png")] > private var ocupadoIcon:Class; > > [Embed("assets/status_voltologo.png")] > private var voltologoIcon:Class; > > [Embed("assets/status_ausente.png")] > private var ausenteIcon:Class; > > > override protected function commitProperties():void > { > super.commitProperties(); > > if (_data != null) > { > switch(_data[_listData.dataField]) > { > case 0 : > icon_img.source = > livreIcon; > break; > case 1 : > icon_img.source = > ocupadoIcon; > break; > case 2 : > icon_img.source = > voltologoIcon; > break; > case 3 : > icon_img.source = > ausenteIcon; > break; > } > } > } > > > private var _listData:DataGridListData; > > [Bindable("dataChange")] > > public function get listData():BaseListData > { > return _listData; > } > > public function set > listData(value:BaseListData):void > { > _listData = DataGridListData(value); > } > > > ]]> > </mx:Script> > > <mx:Image id="icon_img" source="livreIcon" /> > > </mx:VBox> > > Basta vc mudar para [Embed("assets/doc.png")] private var > docIcon:Class;, etc... e no if (_data != null) > { > switch(_data[_listData.dataField]) > { > case doc : > icon_img.source = > livreIcon; > break; > etc... > > p/ implementar no datagrid > > <mx:DataGridColumn dataField="id_status" headerText="" > itemRenderer="caminhonasuaapp.StatusChat" /> > > [ ]'s > > Ricardo > > > On Jun 5, 7:21 am, "Elvis Fernandes" <[EMAIL PROTECTED]> wrote: > > Como essa informação vem do banco? Formato texto? > > > > Bom, de qualquer forma o que você pode fazer é definir a propriedade > > source={suaFuncao(data)}, onde suaFuncao() é uma função [Bindable] que > > recebe o objeto data do dataProvider e verifica qual imagem deve ser > > mostrada, retornando a imagem apropriada. > > > > Espero ter sido claro. =) > > > > Elvis Fernandeshttp://www.elvis.eti.br > > > > 2008/6/4 Lorenzi <[EMAIL PROTECTED]>: > > > > > > > > > > > > > > > > > Pessoal preciso de uma ideia, como faço pra mudar a imagem em tempo de > > > excucao, tipo se o dataFiled extensao for doc mostra a imagem do word > > > se for xls mostra do excel. Estes dados vem do banco. > > > > > <mx:DataGrid x="10" y="43" width="550" id="gridDcto" height="198" > > > dataProvider="{populaGrid}"> > > > <mx:columns> > > > <mx:DataGridColumn headerText="Numero" > > > dataField="numero_dcto"/> > > > <mx:DataGridColumn headerText="Nome" > > > dataField="nome_dcto"/> > > > <mx:DataGridColumn headerText="Extensao" > > > dataField="extensao"/> > > > <mx:DataGridColumn dataField="image" > > > headerText="EXT" width="50" editable="false" > > > sortable="false" resizable="false"> > > > <mx:itemRenderer> > > > <mx:Component id="ImageRenderer"> > > > <mx:VBox horizontalAlign="center" > > > verticalAlign="middle"> > > > <mx:Image verticalAlign="middle" source="{../ > > > excel.jpg}"/> > > > </mx:VBox> > > > </mx:Component> > > > </mx:itemRenderer> > > > </mx:DataGridColumn> > > > </mx:columns> > > > </mx:DataGrid> > > > --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [EMAIL PROTECTED] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---
