Как я могу вычислить номер строки относительно позиции курсора в TextArea с помощью Flex? - PullRequest
1 голос
/ 11 июня 2009

Привет всем, Как я могу найти номер строки в событиях, таких как щелчок мышью, ключ вниз и ключ вверх. А также выделите эту линию цветом. Я использовал TextArea.

Заранее спасибо.

С уважением, Шиванг

1 Ответ

3 голосов
/ 12 июня 2009

Необходимая вам функциональность содержится в классе TextField. Вы должны использовать getLineIndexAtPoint метод TextField, чтобы получить линию в определенной позиции.

Но TextArea скрывает внутренний TextField класс от пользователя.

Итак, первый вариант - использовать UITextField. Второй вариант - расширение TextArea и реализация там необходимых функций.

Вот быстрый прототип, который должен помочь вам начать:

package test
{
import mx.controls.TextArea;
import flash.events.MouseEvent;
import flash.text.TextFormat;

public class HighlightTextArea extends TextArea
{
    public function HighlightTextArea()
    {
        super();
    }

    override protected function createChildren ():void
    {
        super.createChildren();
        textField.addEventListener(MouseEvent.CLICK, textField_clickHandler);
    }

    private function textField_clickHandler (event:MouseEvent):void
    {
        var lineIndex:int = textField.getLineIndexAtPoint(event.localX, event.localY);
        if (lineIndex == -1)
            return;
        var lineOffset:int = textField.getLineOffset(lineIndex);
        var lineLength:int = textField.getLineLength(lineIndex);
        if (lineLength > 0)
            textField.setTextFormat(new TextFormat(null, null, 0xFF0000), lineOffset, lineOffset+lineLength);
    }
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...