Вызов Application.application.enable из TitleWindow в другом компоненте mxml - PullRequest
1 голос
/ 20 сентября 2009

Добрый день.

У меня есть приложение Flex RIA, и в теге приложения есть кнопка, когда ее нажатие вызывает TitleWindow из другого файла .mxml и устанавливает

application.enable = false

Таким образом, пользователь не может использовать какие-либо компоненты в приложении и все еще может использовать компоненты в TitleWindow.

Проблема ее. Когда TitleWindow закрыто, я хочу, чтобы он восстановил приложение до

application.enable = true

, который включает приложение еще раз. Но я не могу вызвать этот код из окна TitleWindow .mxml

Как я могу это сделать? ..

Вот источник:

Loja.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="585" height="450" xmlns:ns1="com.*">
<mx:Style source="theme/simplicitygray.css" />

    <mx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            private var clientid = 0;       

            public function openWindow() : void
            {
                if (clientid == 0) 
                {
                    PopUpManager.createPopUp(this,Login,false);
                    application.enabled = false;
                } else {
                    PopUpManager.createPopUp(this,Conta,false);
                    application.enabled = false;
                }
            }
        ]]>
    </mx:Script>

    <mx:Panel x="10" y="40" width="565" height="400" layout="absolute">
    </mx:Panel>
    <mx:MenuBar x="10" y="10" width="565" height="22"></mx:MenuBar>
    <mx:Button x="508" y="10" label="Aceder" click="openWindow();"/>

</mx:Application>

И одно из окон заголовка. Когда-то они одинаковы.

Login.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="350" height="200" creationComplete="centerWindow()" showCloseButton="true" close="closeWindow()" title="Login">

    <mx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            public function centerWindow():void
            {
                PopUpManager.centerPopUp(this);
            }

            public function closeWindow():void
            {
                PopUpManager.removePopUp(this);

            }

       ]]>

    </mx:Script>

</mx:TitleWindow>

Любая помощь высоко ценится. Спасибо.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2009

application является статическим свойством класса Application и может вызываться из TitleWindow

public function closeWindow():void
{
    PopUpManager.removePopUp(this);
    Application.application.enabled = true;
}

Кстати, есть еще один более простой способ добиться следующего:

Таким образом, пользователь не может использовать какие-либо компоненты в приложении и все еще может использовать компоненты в TitleWindow.

То есть использовать модальное всплывающее окно. Установите для третьего параметра createPopUp значение true и все - вам не нужно включать / отключать приложение вручную: об этом позаботится flex.

PopUpManager.createPopUp(this,Login, true);
Приложение

автоматически станет функциональным, когда вы наберете removePopUp.

1 голос
/ 21 сентября 2009

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

По сути, вы настраиваете настраиваемое событие в вызываемом классе, а затем создаете функцию, которая запускается, когда событие используется. Таким образом, ваш «Loja» будет знать, когда будет выполнен «Login».

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