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

Responder a