Управление фокусом поля. Методы getFocus() и setFocus()

Методы объекта Selection применимы только к тому текстовому полю, которое в данный момент находится в фокусе. Поэтому прежде чем выделить участок текста, нужно убедиться, что курсор ввода располагается в нужном текстовом поле. Для этого необходимо воспользоваться методом Selection.getFocus(). В качестве результата данный метод возвращает строку с адресом объекта (это может быть текстовое поле, кнопка или клип), который на данный момент обладает фокусом ввода. Если текстовое поле не имеет собственного идентификатора, но зато с ним связана переменная (это возможно, если фильм создается в формате Flash 5), то мeтод getFocus() возвращает ее имя. Если ни один объект не имеет фокуса, то результат — null.

Если метод getFocus() покажет, что нужное поле не обладает фокусом ввода, его необходимо сде-лать выделенным программно. Для этого предназначен метод Selection.setFocus(object), где object — объект (это может быть текстовое поле, кнопка или клип), на который нужно навести фокус. Если задача методом Selection.setFocus() была решена успешно, он возвращает true. Иначе возвра-щается false.

// Если pole не имеет фокуса ввода, наводим его программно
if (Selection.getFocus()!=pole.toString()){
Selection.setFocus(pole);
}

Особенностью метода getFocus() является то, что в случае клипов и кнопок он реагирует лишь на так называемый «клавиатурный» фокус, который создается при помощи Tab-обхода или метода setFocus() и, главное, обозначается яркой желтой рамкой.


Если же кнопка или клип выделяется простым щелчком мыши, то такой фокус метод getFocus() не улавливает. Наоборот, в случае текстовых полей фокус рассматриваемым методом регистрируется и тогда, когда поле было выделено вручную.

Поместить текстовое поле в фокус можно также, адресуя его при помощи связанной с ним переменной. Для этого ее имя строго в строковом представлении должно быть прописано в качестве параметра метода Selection.setFocus().

Чтобы уничтожить текущий фокус, методу Selection.setFocus() необходимо передать null.

Особенностью наведения фокуса на текстовое поле является то, что при этом весь его текст выделяется. Если необходимо, чтобы выделения текста не происходило, сразу же после задания фокуса нужно создать «пустое» выделение при помощи следующей строки:

Selection.setSelection(null,null);

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

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

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