PDA

Просмотр полной версии : запретить default event для клавиши Tab


Seroy
15.12.2011, 20:17
Как можно убить насмерть событие клавиши Tab для приложения во Flex? Ну или хотя бы для компонента DataGrid, со всеми его ячейками?

GBee
15.12.2011, 20:24
Событие клавиши Таб?
focusEnabled = false?

Seroy
15.12.2011, 20:51
Событие клавиши Таб?
focusEnabled = false?

Не помогает. Я уже и в компонентах писал, что внутри столбцов:

<mx:DataGridColumn headerText="Название" dataField="imya" width="100">
<mx:itemEditor>
<mx:Component>

<mx:TextInput restrict="A-Za-zА-Яа-я0-9 " maxChars="100" focusEnabled="false" />

</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>

Не спасает. Помогает, если только запретить редактирование:


<mx:DataGridColumn headerText="Название" dataField="imya" width="100">
<mx:itemEditor>
<mx:Component>

<mx:TextInput restrict="A-Za-zА-Яа-я0-9 " maxChars="100" enabled="false" editable="false" />

</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>

Но это и некрасиво, и не решает суть проблемы (создаёт много лишних вычислений, какой столбец для какого пользователя в какой момент запрещён для редактирования).

GBee
15.12.2011, 21:06
Эээ, что-то я не понял связи первого со вторым. Вы чего в результате хотите добиться?

Genzo
16.12.2011, 11:05
dataGrid.addEventListener(FocusEvent.KEY_FOCUS_CHANGE , focusOut);
private function focusOut(e:FocusEvent):void
{
e.preventDefault();
}
Возможно заработает

Seroy
16.12.2011, 11:41
Добавил:
import flash.events.*

Flex выдаёт:
обращение несуществующего свойства dataGrid.
обращение несуществующего свойства focusOut.

Что не так?

Добавлено через 4 минуты

Genzo
16.12.2011, 11:46
Я не полный код написал, а лишь пример. Уж названия переменных можете сами изменить.

Seroy
16.12.2011, 11:47
Эээ, что-то я не понял связи первого со вторым. Вы чего в результате хотите добиться?

Я пытаюсь запретить использование клавиш Tab, Shift+Tab в приложении. Или хотя бы для dataGrid. Пользователь редактирует одни ячейки, другие ему недоступны. Но если он пользуется клавишами Tab, Shift+Tab, всё недоступное сразу становится доступным.

Genzo
16.12.2011, 11:48
<mx:DataGridColumn headerText="Название" dataField="imya" width="100"
keyFocusChange="{event.preventDefault();}">

Seroy
16.12.2011, 11:50
Я не полный код написал, а лишь пример. Уж названия переменных можете сами изменить.

myDG.addEventListener(FocusEvent.KEY_FOCUS_CHANGE , ffo);
private function ffo(e:FocusEvent):void
{
e.preventDefault();
}

myDG - id dataGrid'а. Ошибки те же.

Добавлено через 5 минут
<mx:DataGridColumn headerText="Название" dataField="imya" width="100"
keyFocusChange="{event.preventDefault();}">

Спасибо! Заработало внутри текстовых полей:


<mx:TextInput restrict="№!?A-Za-zА-Яа-я0-9\- " maxChars="100" keyFocusChange="{event.preventDefault();}" />

GBee
16.12.2011, 13:33
Я пытаюсь запретить использование клавиш Tab, Shift+Tab в приложении. Или хотя бы для dataGrid. Пользователь редактирует одни ячейки, другие ему недоступны. Но если он пользуется клавишами Tab, Shift+Tab, всё недоступное сразу становится доступным.

Так может надо ловить событие itemEditBegin у таблицы? Я просто совсем не понимаю зачем использовать textInput, ставить в него кучу ограничений на ввод, и в результате запрещать вводить вообще что-либо.