Просмотр полной версии : TextArea. Позиция каретки.
Каким образом можно переместить каретку в TextArea, чтобы она находилась под курсором мыши, когда указатель находится над какой-то частью введённого текста.
Др.словами нужно сделать то же самое, что происходит при клике на тексте левой кнопкой мыши, только программно.
У TextField'а свойство caretIndex только для чтения.
Немного непонятен Ваш ответ.
Есть компонент TextArea. В нём есть текст, допустим из 20 символов. Если мне нужно переместить каретку на, скажем 10-й символ, я это сделаю таким вот нехитрым способом:
myTextArea.setSelection(10, 10).
Нужно сделать то же самое, только позиция символа должна соответствовать положению курсора мыши над текстом, например курсор может быть над 15-м символом или за пределами текста, тогда нужно каретку поставить в конец текста.
Аа.. ну да, не подумал о там способе.
Воспользуйтесь методом getCharIndexAtPoint() TextField'a. У TextArea его нету правда, так что надо будет ссылку на текстовое поле TextArea получить.
upd: У TextArea textField свойство есть как раз.
Методом перебора выяснилось, что у 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()?
upd: У TextArea textField свойство есть как раз.
protected var textField:IUITextField
Да, похожее свойство действительно есть. Спасибо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.