Просмотр полной версии : запретить default event для клавиши Tab
Как можно убить насмерть событие клавиши Tab для приложения во Flex? Ну или хотя бы для компонента DataGrid, со всеми его ячейками?
Событие клавиши Таб?
focusEnabled = false?
Событие клавиши Таб?
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>
Но это и некрасиво, и не решает суть проблемы (создаёт много лишних вычислений, какой столбец для какого пользователя в какой момент запрещён для редактирования).
Эээ, что-то я не понял связи первого со вторым. Вы чего в результате хотите добиться?
dataGrid.addEventListener(FocusEvent.KEY_FOCUS_CHANGE , focusOut);
private function focusOut(e:FocusEvent):void
{
e.preventDefault();
}
Возможно заработает
Добавил:
import flash.events.*
Flex выдаёт:
обращение несуществующего свойства dataGrid.
обращение несуществующего свойства focusOut.
Что не так?
Добавлено через 4 минуты
Я не полный код написал, а лишь пример. Уж названия переменных можете сами изменить.
Эээ, что-то я не понял связи первого со вторым. Вы чего в результате хотите добиться?
Я пытаюсь запретить использование клавиш Tab, Shift+Tab в приложении. Или хотя бы для dataGrid. Пользователь редактирует одни ячейки, другие ему недоступны. Но если он пользуется клавишами Tab, Shift+Tab, всё недоступное сразу становится доступным.
<mx:DataGridColumn headerText="Название" dataField="imya" width="100"
keyFocusChange="{event.preventDefault();}">
Я не полный код написал, а лишь пример. Уж названия переменных можете сами изменить.
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();}" />
Я пытаюсь запретить использование клавиш Tab, Shift+Tab в приложении. Или хотя бы для dataGrid. Пользователь редактирует одни ячейки, другие ему недоступны. Но если он пользуется клавишами Tab, Shift+Tab, всё недоступное сразу становится доступным.
Так может надо ловить событие itemEditBegin у таблицы? Я просто совсем не понимаю зачем использовать textInput, ставить в него кучу ограничений на ввод, и в результате запрещать вводить вообще что-либо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.