PDA

Просмотр полной версии : Превент ивента в датагриде


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
замени на 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();
}
}
}
}