Eu tentei capturar o click e o mouseDown. os dois ocorrem depois da
seleção... =/
Alguém sabe qual eh lançado antes da seleção?
Ou qual é a ordem dos eventos lançados?

André Coelho Brait da Silva
TeCGraf

Tel: (21) 3527-2502
Cel: (21) 8836-7622


2009/1/28 Julio carneiro <[email protected]>

>
> neste caso vc tem que mexer no código que trata o evento click/change
> que 'muda o estado da aplicação'.
> lá testar onde foi o click e se foi no checkbox ignorar e não 'mudar o
> estado'...
>
>
> On 27 jan, 16:59, Andre Coelho <[email protected]> wrote:
> > Eia o problema, a lina nao pode ser selecionada, pq o select dela faz uma
> > outra ação. No caso, muda o estado da aplicação
> >
> > André Coelho Brait da Silva
> > TeCGraf
> >
> > Tel: (21) 3527-2502
> > Cel: (21) 8836-7622
> >
> > On Tue, Jan 27, 2009 at 4:25 PM, Julio carneiro <[email protected]
> >wrote:
> >
> >
> >
> > > vc já tentou setar o selectedIndex=-1, do datagrid quando o checkbox é
> > > clicado? ou o selectedItem=null?
> >
> > > qualquer um dos dois deve de-selecionar a linha.
> >
> > > julio
> >
> > > On 27 jan, 14:36, Andre Coelho <[email protected]> wrote:
> > > > É, vc não entendeu o meu problema... =P
> >
> > > > Meu problema não é no header, o meu funciona perfeitamente.
> > > > Meu problema é que eu tenho uma checkBox em cada linha do dataGrid.
> Só
> > > que,
> > > > quando eu clico no checkbox, ele acaba selecionando a linha referente
> a
> > > ele
> > > > no dataGrid também.
> > > > O comportamento que eu quero é o seguinte: clicou na checkBox, marca
> só a
> > > > checkBox. Clicou em qualquer outra parte daquela linha do dataGrid,
> marca
> > > a
> > > > linha toda.
> >
> > > > André Coelho Brait da Silva
> > > > TeCGraf
> >
> > > > Tel: (21) 3527-2502
> > > > Cel: (21) 8836-7622
> >
> > > > 2009/1/27 Andre Coelho <[email protected]>
> >
> > > > > Obrigado pela resposta Luis. Eu aidna nao testei a solução, mas só
> pra
> > > > > tirar uma dúvida q jah pintou, pq existe a necessidade de se ter um
> > > header
> > > > > renderer? Eu já tenho um headerRenderer de checkbox, não sei se tá
> > > parecido,
> > > > > aidna vou verificar.
> > > > > Só gostaria de saber se você colou ele aí por alguma necessidade
> > > específica
> >
> > > > > André Coelho Brait da Silva
> > > > > TeCGraf
> >
> > > > > Tel: (21) 3527-2502
> > > > > Cel: (21) 8836-7622
> >
> > > > > 2009/1/27 Luiz Nogueira <[email protected]>
> >
> > > > >> André bom dia,
> >
> > > > >> Cara não sei se entendi muito bem o que vc quer.
> > > > >> Mas tipo assim vou colocar um código aqui que talvez te ajude em
> algo.
> > > > >> Qualquer coisa estamos ai...
> >
> > > > >> Vamos criar um class CheckBoxHeaderRenderer
> > > > >> o cdigo que ele vai ter é o seguinte:
> >
> > > > >> package
> > > > >> {
> > > > >> import flash.events.MouseEvent;
> > > > >> import mx.controls.CheckBox;
> > > > >> import mx.controls.DataGrid;
> > > > >> import mx.controls.dataGridClasses.DataGridColumn;
> > > > >> import mx.controls.dataGridClasses.DataGridListData;
> > > > >> import mx.events.DataGridEvent;
> >
> > > > >> public class CheckBoxHeaderRenderer extends CheckBox
> > > > >> {
> >
> > > > >>        public function CheckBoxHeaderRenderer()
> > > > >>        {
> > > > >>                super();
> > > > >>        }
> >
> > > > >>        private var _data:DataGridColumn;
> >
> > > > >>        override public function get data():Object
> > > > >>        {
> > > > >>                return _data;
> > > > >>        }
> >
> > > > >>        override public function set data(value:Object):void
> > > > >>        {
> > > > >>                _data = value as DataGridColumn;
> > > > >>                label = DataGridListData(listData).label + " as
> plain
> > > > >> text";
> > > > >>                DataGrid(listData.owner).addEventListener
> > > > >> (DataGridEvent.HEADER_RELEASE, sortEventHandler);
> > > > >>                selected = (data.getStyle("plainText") == true);
> >
> > > > >>        }
> >
> > > > >>        private function sortEventHandler(event:DataGridEvent):void
> > > > >>        {
> > > > >>                if (event.itemRenderer == this)
> > > > >>                        event.preventDefault();
> > > > >>        }
> >
> > > > >>        override protected function
> clickHandler(event:MouseEvent):void
> > > > >>        {
> > > > >>                super.clickHandler(event);
> > > > >>                if (selected)
> > > > >>                        data.setStyle("plainText", true);
> > > > >>                else
> > > > >>                        data.setStyle("plainText", false);
> >
> > > > >>                DataGrid(listData.owner).invalidateList();
> > > > >>        }
> >
> > > > >> }
> >
> > > > >> }
> >
> > > > >> //fim do class
> >
> > > > >> no caso aqui vou usar um HTML para o checkbox manipular blz?
> >
> > > > >> vamos criar um outro class TextOrHTMLRenderer
> >
> > > > >> package
> > > > >> {
> > > > >> import mx.controls.DataGrid;
> > > > >> import mx.controls.dataGridClasses.DataGridItemRenderer;
> > > > >> import mx.controls.dataGridClasses.DataGridColumn;
> >
> > > > >> public class TextOrHTMLRenderer extends DataGridItemRenderer
> > > > >> {
> >
> > > > >>        public function TextOrHTMLRenderer()
> > > > >>        {
> > > > >>                super();
> > > > >>        }
> >
> > > > >>        override public function validateProperties():void
> > > > >>        {
> > > > >>                super.validateProperties();
> > > > >>                if (listData)
> > > > >>                {
> > > > >>                        var dg:DataGrid = DataGrid(listData.owner);
> >
> > > > >>                        var column:DataGridColumn =
> > > > >> dg.columns[listData.columnIndex];
> > > > >>                        htmlText = data[column.dataField];
> >
> > > > >>                        if (getStyle("plainText"))
> > > > >>                        {
> > > > >>                                text = text;
> > > > >>                        }
> > > > >>                }
> > > > >>        }
> >
> > > > >> }
> >
> > > > >> }
> >
> > > > >> //fim do class
> >
> > > > >> agora nosso aplicativo dg.mxml
> >
> > > > >> <?xml version="1.0" encoding="utf-8"?>
> > > > >> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
> > > > >> xmlns:local="*" >
> >
> > > > >> <mx:Script>
> > > > >> <![CDATA[
> >
> > > > >> private var dp:Array = [
> > > > >>        { symbol: "ADBE", name: "Adobe Systems Inc.",
> > > > >>                news: "Adobe Flex is <b>great</b>! according to
> > > > >> <i>FlexCoders</
> > > > >> i>" },
> > > > >>        { symbol: "MACR", name: "Macromedia Inc.",
> > > > >>                news: "<FONT color='#FF0000'>Macromedia</FONT> is
> > > absorbed
> > > > >> into
> > > > >> Adobe" },
> > > > >>        { symbol: "MSFT", name: "Microsoft Corp.",
> > > > >>                news: "Microsoft sees <FONT size='20'>Flex</FONT>
> for
> > > the
> > > > >> first
> > > > >> time" },
> > > > >>        { symbol: "IBM", name: "IBM Corp.",
> > > > >>                news: "IBM was once the top <b><i>dog</i></b> but
> no
> > > more"
> > > > >> }
> > > > >>        ];
> >
> > > > >> ]]>
> > > > >> </mx:Script>
> >
> > > > >> <mx:DataGrid id="dg1" initialize="dg1.dataProvider = dp"
> > > > >> paddingTop="0" paddingBottom="0" verticalAlign="middle"
> > > > >>        variableRowHeight="true" >
> > > > >> <mx:columns>
> > > > >> <mx:DataGridColumn headerText="Name" dataField="name"
> width="140"/>
> > > > >> <mx:DataGridColumn headerText="Symbol" dataField="symbol"
> width="60" /
> >
> > > > >> <mx:DataGridColumn headerText="News" dataField="news"
> wordWrap="true"
> > > > >> width="200"
> > > > >>                        headerRenderer="CheckBoxHeaderRenderer"
> > > > >>                        itemRenderer="TextOrHTMLRenderer" />
> > > > >> </mx:columns>
> > > > >> </mx:DataGrid>
> >
> > > > >> </mx:Application>
> >
> > > > >> //fim do aplicativo
> >
> > > > >> Bem espero ter te ajudado...
> >
> > > > >> Abraço,
> >
> > > > >> Luiz Nogueira
> >
> > > > >> On 26 jan, 14:20, Andre Coelho <[email protected]> wrote:
> > > > >> > Eu sei que o assunto do checkbox no datagrid já foi bastante
> > > discutido
> > > > >> aqui
> > > > >> > na lista, ams eu não consegui achar ninguém com um problema
> igual ao
> > > > >> meu.
> >
> > > > >> > Eu já consigo colcoar o checkbox no datagrid e td mais. Tb
> consigo
> > > > >> editar a
> > > > >> > minha propiedade no objeto referenciado.
> >
> > > > >> > O meu problema é que eu quero que, ao clicar na checkbox, a
> linha em
> > > à
> > > > >> qual
> > > > >> > ela pertence não seja selecionada. Mas caso clique em qualquer
> outra
> > > > >> célula,
> > > > >> > a linha inteira deve ser selecionada.
> > > > >> > O meu comportamento, por enquanto, é "a linha é selecioanda ao
> > > clicar no
> > > > >> > checkbox".
> >
> > > > >> > Eu cheguei a criar um renderer para poder capturar o evento do
> > > > >> mouseClick e
> > > > >> > dar um event.stopImmediatePropagation(), mas não deu certo. Acho
> que
> > > a
> > > > >> > seleção na tabela está capturando o evento antes de chegar no
> > > > >> clickHandler
> > > > >> > do checkBox.
> >
> > > > >> > Por enquanto, meu renderer está vazio.
> > > > >> > O código da coluna está assim:
> >
> > > > >> > <Control:CheckBoxHeaderColumn headerWordWrap="true"
> > > textAlign="center"
> > > > >> > headerText=" "
> > > > >> >                     width="25" sortable="false"
> dataField="selected"
> > > > >> > rendererIsEditor="true"
> >
> > > > >> > headerRenderer="View.lqgRenderers.CheckBoxHeaderRenderer">
> > > > >> >                     <Control:itemRenderer>
> > > > >> >                          <mx:Component>
> > > > >> >                              <lqgRenderers:CheckBoxRenderer
> > > > >> > selectedField="selected" change="data.selected = selected" />
> > > > >> >                          </mx:Component>
> > > > >> >                     </Control:itemRenderer>
> > > > >> > </Control:CheckBoxHeaderColumn>
> >
> > > > >> > O CheckBoxHeaderColumn é um header, que estende
> > >  AdvancedDataGridColumn,
> > > > >> com
> > > > >> > um um checkBox que está funcionando numa boa.
> > > > >> > Alguma dica do que eu devo colocar dentro do CheckBoxRenderer?
> >
> > > > >> > André Coelho Brait da Silva
> > > > >> > TeCGraf
> >
> > > > >> > Tel: (21) 3527-2502
> > > > >> > Cel: (21) 8836-7622
> >
>

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