Указывает, что окно является «активным» внутри обычного приложения Flex (не AIR) - PullRequest
0 голосов
/ 25 августа 2011

У меня есть приложение Flex 4 (не AIR), в котором есть плавающие окна, которые по сути действуют как немодальные диалоговые окна.

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

Теперь мне нужно сохранить некоторое представление о том, какой из них "активен" в приложении.Я не хочу / отключать / неактивные, чтобы размыть их или предотвратить ввод на их элементы управления.

Я в основном хочу повторить базовое управление окнами ОС: когда вы нажимаете или вводите в элемент управленияв одном окне оно выходит на передний план, и его строка заголовка выглядит «активной», а остальные - «неактивными».Так же, как с кучкой исследователей в Windows.

Кто-нибудь может подсказать мне подход?

Ответы [ 2 ]

0 голосов
/ 27 августа 2011

Лично я бы справился с этим с помощью того, что мы называем Mediator ... по сути, с одноэлементным контроллером пользовательского интерфейса, а также со слегка настраиваемым компонентом и индивидуальной оболочкой.Во всплывающем окне каждое окно регистрируется с помощью посредника, поэтому посредник знает все открытые окна, при закрытии каждый отменяет регистрацию, OnFocusIn для каждого компонента уведомляет посредника об этом событии, посредник вызывает метод для всех остальных.панель, чтобы сделать размытие или что-то еще.

Пользовательский компонент может расширить TitleWindow и добавить свойство IsActiveWindow, тогда пользовательский скин может изменить его внешний вид на основе этого свойства.

Для про-точек используйте RobotLegsчтобы вставить ссылку на посредника в компоненты.

Удачи!

0 голосов
/ 25 августа 2011

Предполагая, что ваши всплывающие окна расширяют UIComponent, вы должны иметь возможность прослушивать событие FocusIn , чтобы сделать ваше окно активным, и focusOut , чтобы сделать ваше окно неактивным.

Теперь контейнеры обычно не отправляют события фокуса; однако дети контейнеров будут. А так как всплывают события о фокусе, вы можете прослушивать их как часть вашего всплывающего окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...