André,

não importa a ordem dos eventos.
pelo que vc descreveu tem algum código na tua aplicação que é ativado
quando uma linha é selecionada e muda o estado da aplicação...
é neste código que vc tem que mexer... para ele ficar esperto e
detectar que foi clickado um CheckBox e nesse caso não mudar o
'currentState' da tua aplicação.

julio

On 28 jan, 15:48, Andre Coelho <[email protected]> wrote:
> 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">
>
> ...
>
> mais »
--~--~---------~--~----~------------~-------~--~----~
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