Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Превент ивента в датагриде (http://www.flasher.ru/forum/showthread.php?t=91782)

Azy 08.02.2007 13:58

Превент ивента в датагриде
 
Для того чтобы в моем ItemRenderer-e (extend TextArea) при переход на следующую строку DataGrid не переходил на строку ниже хочу отпревентить KeyDownEvent в датагриде, при нажатии клавиши Enter (keycode=13)
Код:

package ed
{
        import mx.controls.DataGrid;
        import flash.events.KeyboardEvent;
       
        public class EDataGrid extends DataGrid
        {
                public function EDataGrid()
                {
                        super();
                        this.addEventListener(KeyboardEvent.KEY_DOWN, this.keyDownEvent);
                }
               
                public function keyDownEvent(event:KeyboardEvent):void
                {
                        if(event.charCode==13)
                        {
                                trace("Enter pressed");
                                event.preventDefault();
                        }
                }
        }
}

Трейситься - трейсится, а ивент не превентится. Где трабл?

__i 08.02.2007 14:24

замени на flash.events.Event.stopPropagation()

Azy 08.02.2007 14:28

Цитата:

Сообщение от __i
замени на flash.events.Event.stopPropagation()

Заменил. Все равно работает. Т.е. при нажатии Enter переходит на следующую строку таблицы.

__i 08.02.2007 14:39

тьху ты не досмотрел класс )
Код:

public class EDataGrid extends DataGrid
        {
                public function EDataGrid()
                {
                        super();
                }
                          override protected function keyDownHandler(event:KeyboardEvent):void
                        {
                                      if(event.charCode!=13)
                        {
                                            super.keyDownHandler(event)
                        }

                          }


Azy 08.02.2007 14:51

Усе равно не пашет :)
Добавил трейсы:
Код:

                        trace(event.charCode);
                        if(event.charCode!=13)
                        {
                                trace("pressed not enter");
                                super.keyDownHandler(event)
                        }

Оттрейсил. При нажатии ентера super.KeyDownHandler не вызывается. Но как-то умудряется работать. :)

__i 08.02.2007 14:59

тогда проблемы в айтем рендере он передает это событие дальше... как решение в атем реднере оверайдишь обработчик на клаву и внем делаешь stopPropagation();

Azy 08.02.2007 15:10

Уря! Пашет! Добавил в ItemEditor stopImmediatePropagation():
Код:

package ed
{
        import mx.controls.TextArea;
        import flash.events.Event;
        import flash.system.fscommand;
        import flash.events.KeyboardEvent;
       
        public class EDescription extends TextArea
        {
                public function EDescription()
                {
                        super();
                        this.addEventListener("change", this.changeEvent);
                }
               
                private function changeEvent(eventObject:Event):void
                {
                        this.height = (this.textHeight <= 48) ? 48 : this.textHeight+6;
                        this.verticalScrollPosition=0;
                }
               
                override protected function keyDownHandler(event:KeyboardEvent):void
                {
                        super.keyDownHandler(event)
                        if(event.charCode==13)
                        {
                                event.stopImmediatePropagation();
                        }
                }               
        }
}



Часовой пояс GMT +4, время: 17:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.