Определение и задание положения курсора ввода

Если текстовое поле располагается в фокусе, в его тексте будет находиться так называемый курсор ввода (caret). Он показывает, на какую позицию осуществится вставка текста из буфера обмена командой Paste. Также курсор ввода полезен, если навигация по тексту поля и его редактирование производится с использованием клавиатуры. При этом, например, нажатие клавиши будет удалять символ, расположенный слева от курсора.

Традиционно курсор ввода отображается в виде мерцающей вертикальной риски. Частота мерцания курсора для большинства Windows-приложений определяется при помощи специальной настройки, задающейся вменю Клавиатура Панели Управления. Однако данная опция никак не влияет на частоту мерцания курсора ввода в текстовых полях Flash — она всегда постоянна, и изменить ее невозможно.

Курсор ввода отображается только в случае полей типа Input. Для динамических текстовых полей его наличие абсолютно бессмысленно: все равно изменить вручную текст в них невозможно. Впрочем, косвенными методами можно установить, что курсор ввода имеется и у полей типа Dynamic — просто он не визуализируется. Например: метод getCaretIndex() применим к полям обоих типов, адинамическое поле может быть прокручено при помощи клавиш движения.

Используя ActionScript, можно как определять положение курсора ввода, так и самостоятельно его задавать.


Решить первую задачу позволяет метод Selection.getCaretIndex(). Он возвращает индекс символа, слева от которого располагается курсор. Если ни одно поле не имеет фокуса ввода, то результатом будет — 1. Если текстовое поле не содержит ни одного символа, то возвращается 0.

Чтобы задать положение курсора ввода, необходимо использовать метод Selection.setSelection(), передав его обоим параметрам одно и то же значение — индекс символа, перед которым должен быть расположен курсор. Например:

this.createTextField("pole", 0, 150, 150, 0, 0);
pole.border=pole.autoSize=true, pole.type="input";
pole.text="Tyт \"\" будет курсор ввода. Его индекс = ";
Selection.setFocus(pole); // Помещаем поле в фокус
Selection.setSelection (5,5); // Помещаем курсор ввода между кавычками
pole.text+=Selection.getCaretIndex(); // Добавляем к тексту поля индекс курсора

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Автоматическое удаление пробелов. Свойство condenseWhite
Встраивание в фильм целого шрифта
Динамическая замена выделенного текста. Метод replaceSel()
Динамическое задание выделения. Метод setSelection()
Задание и извлечение текста поля

Вернуться в раздел: Action Script / 13. Работа с текстом