Просмотр полной версии : Превент ивента в датагриде
Для того чтобы в моем 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();
}
}
}
}
Трейситься - трейсится, а ивент не превентится. Где трабл?
замени на flash.events.Event.stopPropagation()
замени на flash.events.Event.stopPropagation()
Заменил. Все равно работает. Т.е. при нажатии Enter переходит на следующую строку таблицы.
тьху ты не досмотрел класс )
public class EDataGrid extends DataGrid
{
public function EDataGrid()
{
super();
}
override protected function keyDownHandler(event:KeyboardEvent):void
{
if(event.charCode!=13)
{
super.keyDownHandler(event)
}
}
Усе равно не пашет :)
Добавил трейсы:
trace(event.charCode);
if(event.charCode!=13)
{
trace("pressed not enter");
super.keyDownHandler(event)
}
Оттрейсил. При нажатии ентера super.KeyDownHandler не вызывается. Но как-то умудряется работать. :)
тогда проблемы в айтем рендере он передает это событие дальше... как решение в атем реднере оверайдишь обработчик на клаву и внем делаешь stopPropagation();
Уря! Пашет! Добавил в 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();
}
}
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.