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
-~----------~----~----~----~------~----~------~--~---

Responder a