PDA

Просмотр полной версии : TextArea. Позиция каретки.


Касеал
01.09.2009, 14:49
Каким образом можно переместить каретку в TextArea, чтобы она находилась под курсором мыши, когда указатель находится над какой-то частью введённого текста.
Др.словами нужно сделать то же самое, что происходит при клике на тексте левой кнопкой мыши, только программно.

udaaff
01.09.2009, 15:12
У TextField'а свойство caretIndex только для чтения.

Касеал
01.09.2009, 16:10
Немного непонятен Ваш ответ.

Есть компонент TextArea. В нём есть текст, допустим из 20 символов. Если мне нужно переместить каретку на, скажем 10-й символ, я это сделаю таким вот нехитрым способом:
myTextArea.setSelection(10, 10).
Нужно сделать то же самое, только позиция символа должна соответствовать положению курсора мыши над текстом, например курсор может быть над 15-м символом или за пределами текста, тогда нужно каретку поставить в конец текста.

udaaff
01.09.2009, 16:25
Аа.. ну да, не подумал о там способе.
Воспользуйтесь методом getCharIndexAtPoint() TextField'a. У TextArea его нету правда, так что надо будет ссылку на текстовое поле TextArea получить.
upd: У TextArea textField свойство есть как раз.

Касеал
01.09.2009, 17:09
Методом перебора выяснилось, что у TextArea компонент TextField лежит под индексом 2. Ссылку на него получил так:

var myTextField:TextField = TextField(taInput.getChildAt(2));
var caretPos:int = myTextField.getCharIndexAtPoint(myTextArea.mouseX, myTextArea.mouseY);

myTextArea.setSelection(caretPos, caretPos);

Всё работает. Беспокоит только одно. Может есть какой-либо другой способ получить ссылку на TextField компонента TextArea не используя метод getChildAt()?

udaaff
01.09.2009, 17:22
upd: У TextArea textField свойство есть как раз.
protected var textField:IUITextField

Касеал
01.09.2009, 17:56
Да, похожее свойство действительно есть. Спасибо.