PDA

Просмотр полной версии : RichTextEditor, контекстное меню.


Касеал
18.08.2009, 20:28
Необходимо реализовать SpellChecker для проверки вводимого текста. Реализация проверки слов уже реализована. Нужно, при нажатии на выделенном слове правой кнопкой мыши, чтобы в контекстном меню появлялся список слов из словаря замены.
Заполнить меню нужными словами из словаря не проблема -
Вопрос: как отловить нажатие правой кнопки мыши для этого компонента, когда курсор находится в состоянии для ввода текста или где "отыскать" событие, которое отвечает за вывод контекстного меню компонента.

wvxvw
18.08.2009, 20:49
Чесно, в AS3 не пробовал, но в AS2 это событие было бы KeyboardEvent.KEY_DOWN и keyCode соответственно 2...

Касеал
20.08.2009, 11:18
Если честно, не могу понять, при чём тут события от клавиатуры к правому клику мыши. Если бы мне нужно было узнать код клавиши контекстного меню, я бы в обработчике KEY_DOWN прописал бы - trace(keyCode) и мне бы выдало - 92, код клавиши контекстного меню на клавиатуре. Проблема только в том, что мне нужен клик мыши + клавиша контекстного меню клавиатуры в RichTextEditor не работает.

Добавлено через 21 минуту
Вот тут можно посмотреть на то, чего я хочу добиться:
http://flashden.net/item/simple-flash-spell-checker-v20-as3/24579
Вводите слово, если его подчёркивает, значит такого слова нет в словаре. Клацаем правой кнопкой мыши на нём, в контекстном меню видим варианты замены.

Dezar
20.08.2009, 11:42
он ошибся.
такая же прослушка есть и у мышки.
там используешь кнопку 2.и все.
и будет ВСе .

wvxvw
20.08.2009, 12:20
Если честно, не могу понять, при чём тут события от клавиатуры к правому клику мыши. Если бы мне нужно было узнать код клавиши контекстного меню, я бы в обработчике KEY_DOWN прописал бы - trace(keyCode) и мне бы выдало - 92, код клавиши контекстного меню на клавиатуре. Проблема только в том, что мне нужен клик мыши + клавиша контекстного меню клавиатуры в RichTextEditor не работает.

Кнопка мыши - тоже кнопка.

Касеал
20.08.2009, 14:15
Вот решение моей проблемы. Детали синтаксиса Flex опущены:


var richContextMenu:ContextMenu = new ContextMenu();

richContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, eventRichContextMenu);

rteInput.contextMenu = richContextMenu;

function eventRichContextMenu(e:ContextMenuEvent):void
{
Alert.show("Right click. Context menu opened.");
}

<mx:RichTextEditor id="rteInput" x="201.5" y="178"> </mx:RichTextEditor>