从不同mxml组件中的标题窗口调用Application.Applation.Enable

pinkon5k  于 2022-09-21  发布在  Apache
关注(0)|答案(2)|浏览(143)

我有一个Flex RIA应用程序,在应用程序标记中有一个按钮,当它被按下时,它调用另一个.mxml文件中的标题窗口,并设置

application.enable = false

这样,用户就不能使用应用程序中的任何组件,而仍然可以使用标题窗口中的组件。

问题是,当标题窗口关闭时,我希望它将应用程序恢复到

application.enable = true

这再次启用了该应用程序。但我不能从标题窗口.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>
0s0u357o

0s0u357o1#

applicationApplication类的静态属性,可以从TitleWindow

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

顺便说一句,还有另一种更容易的方法来实现以下目标:

这样,用户就不能使用应用程序中的任何组件,而仍然可以使用标题窗口中的组件。

这就是使用模式弹出窗口。将createPopUp的第三个参数设置为true,就是这样-您不必手动启用/禁用应用程序:Flex会处理它。

PopUpManager.createPopUp(this,Login, true);

一旦调用removePopUp,应用程序将自动起作用。

vecaoik1

vecaoik12#

您可以使用自定义事件来启用此功能,如下所述。

本质上,您在要调用的类中设置一个自定义事件,然后创建一个在使用该事件时运行的函数。这样你的‘Loja’就会知道什么时候‘登录’完成了。

相关问题