• FLEX MDI窗口开发实例


    参考了杜增强的dpanel和Flex Doc Team的关于Creating Resizable and Draggable Flex Components
    连接:
    dpanel
    Creating Resizable and Draggable Flex Components
    demo下载
    示例:

    代码:
    application.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
         xmlns:mdi
    ="ext.containers.windows.mdi.*" width="100%" height="100%"
    creationComplete
    ="initCollections();">
        
    <mx:Script>
            
    <![CDATA[
                import mx.events.MenuEvent;
                import mx.collections.XMLListCollection;
                import mx.controls.Alert;
                import mx.managers.PopUpManager;
                import mx.managers.SystemManager;
                import mx.containers.Panel;
                import ext.containers.windows.mdi.ChildWindow;
                import mx.events.FlexEvent;
                private var menuBarXML:XMLList =
                <>
                    <menuitem label = "windows">
                        <menuitem label ="create window" data="createWindow"/>
                        <menuitem label ="close window" data="closeWindow"/>
                        <menuitem label ="max window" data ="maxWindow"/>
                        <menuitem label ="min window" data = "minWindow"/>
                        <menuitem label ="min all windows" data ="minAllWindows"/> 
                        <menuitem label ="Tile window" data ="tileWindow"/>
                        <menuitem label ="Cascade window" data ="cascadeWindow"/>
                    </menuitem>
                    <menuitem label ="modal window">
                        <menuitem label ="create modal window" data ="showModal"/>
                    </menuitem>
                </>;        
                [Bindable]
                private var menuBarCollection:XMLListCollection;
                
                private function initCollections():void
                {
                    menuBarCollection = new XMLListCollection(menuBarXML);
                }
                private function menuHandler(e:MenuEvent):void{
                    //Alert.show(e.item.@data);
                    switch(String(e.item.@data)){
                        case "createWindow":
                            new MDITest1().addToMainArea();
                            break;
                        case "showModal":
                            (new ModalWindow()).showModal();
                            break;
                        case "closeWindow":
                            ma.windowClose();
                            break;
                        case "maxWindow":
                            ma.maxActiveWindow();
                            break;
                        case "minWindow":
                            ma.minActiveWindow();
                            break;
                        case "minAllWindows":
                            ma.windowMinimizeAll();
                            break;
                        case "tileWindow":
                            ma.windowTileHorizontal();
                            break;
                        case "cascadeWindow":
                            ma.windowCascade();
                            break;
                    }
                }
            
    ]]>
        
    </mx:Script>
        
    <mx:MenuBar x="0" y="0" labelField="@label" itemClick="menuHandler(event);"
    dataProvider
    ="{menuBarCollection}" width="100%" />
        
    <mdi:MainArea id="ma" width="100%" height="100%"/>
    </mx:Application>

    MDITest1.mxml
    1 <?xml version="1.0" encoding="utf-8"?>
    2 <ChildWindow xmlns="ext.containers.windows.mdi.*" xmlns:mx="http://www.adobe.com/2006/mxml"
    width
    ="400" height="300" xmlns:flexlib="flexlib.containers.*" title="child window">
    3     <flexlib:Docker>
    4         <flexlib:DockableToolBar width="215">
    5         <mx:Button width="30" label="B" fontWeight="bold" fontFamily="Arial"/>
    6         <mx:Button width="32" label="I" fontStyle="italic"/>
    7         </flexlib:DockableToolBar>
    8     </flexlib:Docker>
    9 </ChildWindow>


    ModalWindow.mxml
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <Window xmlns="ext.containers.windows.*" 
     3     xmlns:mx="http://www.adobe.com/2006/mxml" width="412" height="322" 
     4     layout="absolute" xmlns:flexlib="flexlib.containers.*" 
     5     title="This is a modal window" >
     6     <mx:Script>
     7         <![CDATA[
     8             import mx.controls.Alert;
     9         ]]>
    10     </mx:Script>
    11     <mx:Button label="close" x="331" y="246" click="modalResult = Alert.CANCEL;"/>
    12     <flexlib:SuperTabNavigator x="10" y="10" width="376" height="221" tabEnabled="true">
    13         <mx:Canvas label="one" width="100%" height="100%">
    14             <mx:DataGrid x="5" y="0" width="100%" height="100%">
    15                 <mx:columns>
    16                     <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
    17                     <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
    18                     <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
    19                 </mx:columns>
    20             </mx:DataGrid>
    21         </mx:Canvas>
    22         <mx:Canvas label="two" width="100%" height="100%">
    23         </mx:Canvas>
    24         <mx:Canvas label="three" width="100%" height="100%">
    25         </mx:Canvas>
    26         <mx:Canvas label="four" width="100%" height="100%">
    27         </mx:Canvas>
    28     </flexlib:SuperTabNavigator>
    29     <mx:Button label="ok" x="288" y="246" click="modalResult = Alert.OK"/>
    30 </Window>
    31 
    ModalWindow.mxml中第11行中 click事件中只要对modalResult写值就自动关闭窗口,模仿delphi中的模态窗口。


  • 相关阅读:
    C#事件(event)解析
    dll加入到GAC后,如何方便的调试
    『C程序设计』读书笔记系列文章之第四章 逻辑运算和判断选取控制
    C#委托之个人理解
    虚方法(virtual)和抽象方法(abstract)的区别
    『C程序设计』读书笔记系列文章之第二章 数据类型、运算符与表达式
    SOA概览(转)
    今天学的几个有用的句型
    【老孙随笔】PPT高手的启示
    【项目经理之修炼(11)】《初级篇》什么样的项目经理才可能成功??
  • 原文地址:https://www.cnblogs.com/jssy/p/886239.html
Copyright © 2020-2023  润新知