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