Esqueci de dizer que no meu list está com creationPolicy Immediate :) Abraço,
Ernani 2012/1/11 Helio Antonio Francisco Silva <[email protected]> > isso mesmo, pelo que eu ja estudei do combobox, list e datagrid ele > controstroi os itens de acordo com a rolagem ou seja so existem os itens > que voce ta vendo os pra baixo nao existem por isso voce tem de controlar > de acordo com o seu dataprovider, que deve ser um array nao ? ai eu sempre > controlo o array e dessa forma consigo mexer no itemrender > > > 2012/1/11 Cristian Göhl <[email protected]> > >> Opa, >> >> se entendi você quer marcar tudo, simplesmente altere o valor no seu >> dataProvider(bindable). >> >> O IR deve identificar a mudança e cair no set data e já era. >> >> abraço. >> >> *From:* Julio Cesar <[email protected]> >> *Sent:* Wednesday, January 11, 2012 12:04 PM >> *To:* [email protected] >> *Subject:* Re: [flexdev] Re: Como acessar um itemrenderer de um list ?? >> >> Cara desse jeito deu quase certo, porém acontece o seguinte, >> meu list tem um scroll, tudo q esta visível ele pega, o resto q vem >> depois de descer ele nao pega >> >> >> Em 11/01/2012 11:25, Ernani Joppert Pontes Martins escreveu: >> >> Faça assim: >> >> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" >> xmlns:s="library://ns.adobe.com/flex/spark" >> xmlns:mx="library://ns.adobe.com/flex/mx" >> width="100%" height="100%" >> creationComplete="initApp()"> >> >> >> private function initApp() : void >> { >> meuComponente.itemRenderer = new ClassFactory( MeuRenderer ); >> } >> >> private function obtemObjeto( ) : void >> { >> var i : int = >> meuComponente.selectedIndex; >> var renderer : MeuRenderer = meuComponente.dataGroup.getElementAt( i ) as >> MeuRenderer; >> >> ............ >> seu alerta -> >> Alert.show("Cliquei: " + >> renderer.labelDisplay.text); >> ............. >> } >> >> Espero ter ajudado. >> >> Abraço, >> >> Ernani >> >> 2012/1/11 Julio Cesar <[email protected]> >> >>> Tem alguma forma de eu percorrer meu list.dataProvider e chamar essa >>> função: >>> >>> >>> public function clickCheck(event:Event):void >>> { >>> var e:MyCheckBoxEvent = event as MyCheckBoxEvent; >>> //e.itemRenderer.cb.label = "changed"; //just to verify >>> that we're looking at the correct renderer :) >>> Alert.show("Cliquei: " + >>> e.itemRenderer.labelDisplay.text); >>> } >>> >>> ????? >>> >>> Em 11/01/2012 11:03, Ernani Joppert Pontes Martins escreveu: >>> >>> Eu fiz algo parecido, mas, como no componente List eu tenho um objeto >>> (VO), eu setei no VO uma propriedade booleana. >>> >>> Como tudo se trata de um VO genérico, eu fiz o item renderer como se >>> fosse um componente data aware...:P >>> >>> MeuVO contém a propriedade >>> >>> var isSelected : Boolean = false; >>> >>> No ItemRenderer em si, fiz os seguintes métodos, dentro de fx:Script... >>> >>> // grava ou remove do db de acordo com a propriedade >>> isSelected >>> private function onChange( evt : Event ) : void >>> { >>> var vo : MeuVO = data as MeuVO; >>> >>> if ( !vo.isSelected ) >>> { >>> // grava no db >>> setVOValueInDB.token = service.createOrUpdateVO( >>> obj ); >>> } >>> else >>> { >>> // deleta do db >>> removeVOValueInDB.token = service.deleteVO( obj >>> ); >>> } >>> } >>> >>> // callback de retorno quando marcando um item >>> // ou seja, marcando um item como selecionado >>> protected function setVOValueInDBResultHandler( event >>> : ResultEvent ) : void >>> { >>> var ret : Boolean = setVOValueInDB.lastResult as >>> Boolean; >>> >>> if ( ret ) >>> { >>> data.isSelected = true; >>> } >>> else >>> { >>> data.isSelected = false; >>> } >>> } >>> >>> // retorno do callback quando removendo um registro >>> // ou seja, desmarcando um item >>> protected function removeVOValueInDBResultHandler( event >>> : ResultEvent ) : void >>> { >>> var ret : Boolean = removeVOValueInDB.lastResult as >>> Boolean; >>> >>> if ( ret ) >>> { >>> data.isSelected = false; >>> } >>> else >>> { >>> data.isSelected = true; >>> } >>> } >>> >>> Já no MXML do mesmo item renderer, contém isto: >>> >>> <fx:Declarations> >>> <services:GenericVOService id="service" >>> fault="Alert.show( 'Aqui vai a mensagem de erro do RemoteObject, uma msg >>> genérica.' )" >>> showBusyCursor="true" /> >>> >>> <s:CallResponder id="setVOValueInDB" >>> result="setVOValueInDBResultHandler(event)" /> >>> <s:CallResponder id="removeVOValueInDB" >>> result="removeVOValueInDBResultHandler(event)" /> >>> </fx:Declarations> >>> >>> <s:HGroup width="100%" height="100%" horizontalAlign="left" >>> verticalAlign="middle" paddingLeft="5"> >>> <s:CheckBox selected="{ data.isSelected }" >>> click="onChange(event);" /> >>> <s:Label text="{ data.categoria }" /> >>> </s:HGroup> >>> >>> Abraço, >>> >>> Ernani >>> >>> 2012/1/11 Julio Cesar <[email protected]> >>> >>>> Pessoal consegui por parte,* (agora preciso adaptar isso para >>>> selecionar todos de uma vez)* >>>> >>>> consegui na aplicação principal pegar o event do itemrenderer, tipo o >>>> click do checkbox. >>>> >>>> criei uma classe: >>>> >>>> package >>>> { >>>> import flash.events.Event; >>>> >>>> public class MyCheckBoxEvent extends Event >>>> { >>>> public var isSelected:Boolean; >>>> public var itemRenderer:Object; >>>> public static const SELECTED_CHANGED:String = "selectedChanged"; >>>> >>>> public function MyCheckBoxEvent(type:String, >>>> itemRenderer:Object, isSelected:Boolean=false){ >>>> super(type); >>>> this.itemRenderer = itemRenderer; >>>> this.isSelected = isSelected; >>>> } >>>> >>>> override public function clone():Event{ >>>> return new MyCheckBoxEvent(type, this.itemRenderer, >>>> this.isSelected); >>>> } >>>> } >>>> } >>>> >>>> >>>> no click do meu checkbox dentro do itemrenderer coloquei isso: >>>> >>>> var evt:MyCheckBoxEvent = new >>>> MyCheckBoxEvent(MyCheckBoxEvent.SELECTED_CHANGED, this, cb.selected); >>>> owner.dispatchEvent(evt); //Dispatch event from the >>>> List component, not from the item renderer >>>> >>>> ai no meu list coloquei assim: >>>> >>>> list.addEventListener('selectedChanged',clickCheck); >>>> >>>> e minha funcao: >>>> >>>> >>>> public function clickCheck(event:Event):void >>>> { >>>> var e:MyCheckBoxEvent = event as MyCheckBoxEvent; >>>> Alert.show("Cliquei: " + >>>> e.itemRenderer.labelDisplay.text); >>>> } >>>> >>>> >>>> fonte: http://nwebb.co.uk/blog/?p=47 >>>> >>>> >>>> >>>> Em 11/01/2012 01:58, Cristian Göhl escreveu: >>>> >>>> Boa madrugada hehe, >>>> >>>> Eu uso *override no set data** *para os meus IR, indiferente de >>>> criados via MXML ou AS. >>>> >>>> override public function set data(value:Object):void >>>> { >>>> super.data = value; >>>> if(value != null) >>>> { >>>> // bla bla bla acessa os dados de >>>> data[column.dataField] ou não e faz o que precisar com outros comps(cb, >>>> label,etc); >>>> } >>>> } >>>> >>>> Ai, meio que esqueci, acho que cria o change do CB no IR, e manda >>>> atualizar os dados originais(ex. data[column.dataField]); >>>> >>>> Dependendo o que você precisar, também pode disparar eventos do IR e >>>> escutar no form, então fazer algo. >>>> >>>> Abraço. >>>> >>>> *From:* Julio Cesar <[email protected]> >>>> *Sent:* Tuesday, January 10, 2012 4:33 PM >>>> *To:* [email protected] >>>> *Subject:* Re: [flexdev] Re: Como acessar um itemrenderer de um list ?? >>>> >>>> Outra coisa, meu itemrenderer não é só um checkbox, é um checkbox, um >>>> label, e um textinput, pq qdo clico 2x em cima dele, consigo renomeá-lo. >>>> >>>> Em 10/01/2012 14:47, Julio Cesar escreveu: >>>> >>>> Assim, estou montando um list dinamicamente: >>>> >>>> var lista:List = new List(); >>>> lista.width = 100; >>>> e vou setando as confs dele (tamanho, cor, etc...) >>>> >>>> depois eu digo que cada linha será um checkbox, a forma que eu achei >>>> dinamicamente foi com ClassFactory, desssa forma: >>>> >>>> var customItemRenderer:ClassFactory = new >>>> ClassFactory(checkRenderer); >>>> lista.itemRenderer = customItemRenderer; >>>> >>>> depois eu preencho o dataprovider dele com meu arraycollection >>>> >>>> depois eu adiciono na tela: >>>> panel_listas.addElement(lista); >>>> >>>> >>>> tudo isso dinamicamente, até ai blz, gera legal, ai eu quero acessar >>>> alguma linha e dar um selected no checkbox, ou até mesmo selecionaar todos >>>> os checks ao msm tempo, é ai q eu enrosco. >>>> >>>> erictonussi >>>> eu quero pq eu quero saber quais estão marcados >>>> >>>> helio.afsilva >>>> não sei se da para pegar o array bindado pq toda hora muda ele >>>> >>>> leonardoc.oliveira >>>> gostei do seu link hehe >>>> >>>> Em 10/01/2012 13:36, Eric Tonussi escreveu: >>>> >>>> Explica melhor o que exatamente você quer fazer. Para que você quer >>>> acessar este item render? >>>> >>>> Em 10 de janeiro de 2012 13:25, Julio Cesar <[email protected]>escreveu: >>>> >>>>> Cara difícil isso, coloquei um breakpoint nas linhas abaixo (na vdd >>>>> não manjo mto debugar) to tentando aprender >>>>> >>>>> var customItemRenderer:ClassFactory = new ClassFactory(checkRenderer); >>>>> lista.itemRenderer = customItemRenderer; >>>>> >>>>> lista.dataProvider = ac_colunas; >>>>> >>>>> dentro de checkRenderer tem um combobox chamado cb que recebe >>>>> 'selected' >>>>> >>>>> mas não consegui identificar ainda >>>>> >>>>> >>>>> Em 10/01/2012 12:47, Leonardo Oliveira escreveu: >>>>> >>>>>> Julio, use o modo debug. Coloque um breakpoint onde vc quiser, >>>>>> >>>>>> adicione uma expressão watch ao seu itemRenderer e veja na aba >>>>>> Expressions. Tudo que vc precisa está lá. >>>>>> >>>>>> On 10 jan, 11:05, Julio Cesar<[email protected]> wrote: >>>>>> >>>>>>> Boa tarde pessoal >>>>>>> >>>>>>> Tenho um list com itemrenderer de um combobox >>>>>>> >>>>>>> Gostaria de saber se tem como acessar este item renderer >>>>>>> >>>>>>> valeu >>>>>>> >>>>>> >>>>> -- >>>>> 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 >>>>> >>>> >>>> -- >>>> 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 >>>> >>>> >>>> >>>> -- >>>> 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 >>>> -- >>>> 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 >>>> >>>> >>>> -- >>>> 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 >>>> >>> >>> -- >>> 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 >>> >>> >>> -- >>> 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 >>> >> >> -- >> 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 >> >> >> -- >> 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 >> >> -- >> 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 >> > > > > -- > *Hélio Antonio Francisco Silva* > Desenvolvedor web > Certificado Flash developer > Certificado Flash Design > Certificado web developer > Consultor Microsiga / Totvs > Desenvolvedor ADVPL / ASP > Analista de sistemas e ERP Sênior. > > -- > 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 > -- 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
