Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Spark TextArea. Установка курсора в нужную позицию по правому клику (http://www.flasher.ru/forum/showthread.php?t=185437)

DaFive 12.10.2012 14:33

Spark TextArea. Установка курсора в нужную позицию по правому клику
 
Тема связана немножко с предыдущим постом (http://www.flasher.ru/forum/showthread.php?t=185425). Решения для spellcheckerа я нашёл, по готовности - поделюсь.

Значит задача состоит в следующем. Поскольку правый клик для TextArea очень своебразный - нашёл я таки способ его обойти и сделать своё контекстное меню.

Правый клик обходится через код:
Код AS3:

protected function onRightTextClick(event:MouseEvent):void
{
    if((to_send.textDisplay as RichEditableText) != null && (to_send.textDisplay as RichEditableText).contextMenu != null) {
    ((to_send.textDisplay as RichEditableText).contextMenu as ContextMenu).hideBuiltInItems();
  ((to_send.textDisplay as RichEditableText).contextMenu as ContextMenu).clipboardMenu = false;
 
//далее создаем нативное меню
}

to_send - дебаговое название TextArea.

Так вот. Существует ли возможность поставить текущую позицию курсора TextArea в место, куда я чкнул правой кнопкой мыши? Чую без велосипеда или костылей мне не обойтись, в виду незнания сей темы.

AlexLucas 24.10.2012 18:44

Тут написали про вот это. Этот ивент вроде до появления меню диспатчится, по идее можно отловить координаты, ну и в s:TextArea вроде можно узнать что за символ находится по этим координатам.

DaFive 25.10.2012 14:09

Не, это не катит, потому что меню моё. А позиция курсора не устанавливается. Ибо тема связана с постом, указанным в стартовом сообщении.

Astraport 25.10.2012 14:28

Не очень понял - нужно просто поставить курсор в TextArea по правому клику?
Не пробовал:
1. Найти место клика можно попробовать через textArea.measure() они там разные.
2. Поставить курсор textArea.selectionBeginIndex и textArea.selectionEndIndex.

DaFive 25.10.2012 14:37

measureText() Does not work for Spark components since they don't use UITextField :(

textArea.selectionBeginIndex и textArea.selectionEndIndex - ну я ж не знаю куда мне ставить его, если я не знаю куда юзер тыкнул.

Узнать позицию и пропорции текстового поля. Рассчитать относительно него позицию курсора, посмотреть на какую строку попадает, зная ширину/высоту буквы, нееее :) Я не готов к таким пляскам :away:

Добавлено через 1 минуту
Ааа, апдейт: measure просто есть.

AlexLucas 25.10.2012 17:19

Ну если у вас есть MouseEvent (кстати как вы ловите MouseEvent правого клика? у вас AIR приложение?), можно же достать координаты мыши в тот момент, расчитать позицию курсора относительно поля и достать символ на той позиции.

DaFive 25.10.2012 17:24

О чем я и говорю, что без костыля нормально не поставишь.

AlexLucas 25.10.2012 18:15

Да, точно, привык к getCharIndexAtPoint() :)
Придётся лезть в TLF.


Часовой пояс GMT +4, время: 07:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.