Flex: createPopUp -> сделать все модальным, кроме полос прокрутки - PullRequest
0 голосов
/ 28 сентября 2011

Я сделал это простое приложение, чтобы продемонстрировать свою проблему.Он имеет:

  • Изображение
  • Кнопка, запускающая всплывающее окно
  • Полосы прокрутки на боковой стороне
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx" 
                   verticalScrollPolicy="on"
                   horizontalScrollPolicy="on"
                   layout="vertical">

    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            public function buttonClick():void {
                PopUpManager.createPopUp(this,JakePanel,true);
            }
        ]]>
    </fx:Script>

    <mx:Image width="2000"
              source="@Embed(source='assets/image.jpg')"/> 
    <mx:Button click="{buttonClick()}" label="Launch"/>

</mx:Application>

При нажатии кнопки запуска запускается это всплывающее окно:

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" 
          xmlns:s="library://ns.adobe.com/flex/spark" 
          xmlns:mx="library://ns.adobe.com/flex/mx" 
          layout="vertical" 
          width="400" height="300"
          title="Popup"
          >
    <fx:Script>
        <![CDATA[
            import mx.managers.PopUpManager;
            public function close():void {
                PopUpManager.removePopUp(this);
            }           
        ]]>
    </fx:Script>
    <s:TextArea text="Enter more text here: " width="100%" height="200"/>
    <s:Button label="OK" click="{close()}" width="100%" height="30" />

</mx:Panel>

Это мои требования

  1. Когда всплывающее окно открыто, мне нужно иметь возможность отключить всекроме всплывающего окна.Для этого я использую: PopUpManager.createPopUp(this,JakePanel,true);.Последний параметр указывает, что всплывающее окно является «модальным» и должно захватывать все события мыши.

  2. Мне также нужно разрешить основные полосы прокрутки, когда всплывающее окно открыто.Часто мои пользователи открывают приложение на очень маленьком экране и не могут изменить его размер.Например:

enter image description here

Это проблема, когда приложение слишком маленькое, чтобы нажать кнопку ОК:

enter image description here

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

1 Ответ

1 голос
/ 29 сентября 2011

Я думаю, что лучший способ сделать это:

  1. Обернуть все в основном приложении в тег <mx:hgroup id="allYourStuff">.
  2. При добавлении всплывающего окна к экранному вызову: allYourStuff.enabled = false
  3. При удалении всплывающего окна с экранного вызова: allYourStuff.enabled = true
...