2011-05-19 64 views
8

像在M​​icrosoft OS(XP,VISTA,7等)的窗口...如何在分机4中创建完整的模式窗口?

如果一个主窗口创建一个模式窗口,用户不能访问主窗口中,
(包括接近和访问工具栏等)

我想打一个类似与ExtJS的,..这是我的模态例如:

Ext.create("Ext.Window",{ 
    title : 'aa', 
    width : 200, 
    height: 150, 
    html : 'a', 
    tbar : [{ 
     text : 'aa' , 
     handler :function(){ 
      Ext.create("Ext.Window",{ 
       title : 'aa', 
       width : 150, 
       closable : false, 
       height: 100, 
       html : 'b', 
       ownerCt : this, 
       modal : true 
      }).show(); 
     } 
    }] 
}).show(); 

的问题是,它只是关闭主窗口的身体,用户仍然可以存取权限主工具栏,也关闭它..

我的问题是如何使全模态?或者如果它不能完成,如何禁用主窗口,如果模态窗口出现,我已经使用模式赢得监听器显示,但问题是我无法访问从这个监听器的主窗口...

编辑:

这是我到目前为止的代码:

Ext.create("Ext.Window",{ 
    title : 'aa', 
    width : 200, 
    height: 150, 
    html : 'a', 
    maskOnDisable : false, 
    tbar : [{ 
     text : 'aa' , 
     handler :function(a){ 
      var parent = a.up("window"); 
      parent.disable(); 
      Ext.create("Ext.Window",{ 
       title : 'aa', 
       width : 150, 
       height: 100, 
       html : 'b', 
       listeners : { 
        scope : this, 
        "close" : function(){ 
         parent.enable(); 
        }, 
        /* 
        "blur" : function(){ 
         this.focus() 
        } 
        */ 
       } 
      }).show(); 
     } 
    }] 
}).show(); 

althougt这不是模式的概念,但它看起来像我想要什么..
现在,我有新的问题,maskOnDisable不是作品,。 。我需要一个像blur这样的事件,所以,如果用户点击父窗口,它会回到弹出窗口...
(我应该张贴它作为新的问题?)

+0

看看更新的答案。 – 2011-05-23 09:03:11

+0

@Abdel,谢谢你的帮助..看我的编辑..我再次需要一点帮助.. – 2011-05-25 02:45:11

回答

8

新建答案:

您是否尝试过disable()enable()父窗口是否正确?我认为这应该有助于您停止访问第一个窗口,同时允许您的用户访问主应用程序菜单和屏幕。这里是我的尝试:

var x = Ext.create("Ext.Window",{ 
    title : 'aa', 
    width : 200, 
    height: 150, 
    html : 'a', 
    tbar : [{ 
     text : 'aa' , 
     handler :function(){ 
      // I disable the parent window. 
      x.disable(); 

      Ext.create("Ext.Window",{     
       title : 'aa', 
       width : 150, 
       closable : false, 
       height: 100, 
       html : 'b' 
       // You will need to enable the parent window in close handler of this window. 

      }).show(); 
     } 
    }] 
}).show(); 

当禁用窗口,窗口内的组件将被禁用,您将无法甚至移动窗口。但与此同时,您将可以访问其他组件,如主菜单,网页上的网格。您也可以访问新窗口。现在,要使其表现得像一个模式,您需要在关闭子窗口时启用父窗口。你可以使用enable()方法。

我想不出任何其他方式来实现你正在寻找的东西。


老答案:

我不知道为什么你已经设置ownerCt属性指的是窗口本身!这是你的主要问题。通过删除属性,你将实现你正在寻找的东西。这里是更新代码:

Ext.create("Ext.Window",{ 
    title : 'Extra window!', 
    width : 150,        
    height: 100, 
    closable : false,       
    html : 'A window that is a modal!',       
    modal : true 
}).show(); 

是否有任何理由在设置ownerCt属性?

+0

不,不是这样,..是我的问题不清楚?我有一个主窗口..比用户单击工具栏按钮..它弹出一个新窗口..我想用户不能访问主窗口..所以我需要'ownerCt'来指定谁是父..它就像“文件夹选项“在”资源管理器“(窗口)中,用户无法访问资源管理器,直到文件夹选项关闭。 – 2011-05-19 06:24:32

+0

但用户仍然可以打开新的资源管理器或其他应用程序... – 2011-05-19 06:25:27

22

这些天你设置模式:真

Ext.define('myApp.view.MyModalWindow', { 
extend: 'Ext.window.Window', 
... 
modal: true, 
... 
+0

这适用于子窗口,对不对? – jcolebrand 2013-02-01 16:32:55

+1

最后回答:是:) – emolaus 2013-05-10 10:44:53

+0

是的,模态配置属性是去的方式:)文件:http://docs.sencha.com/extjs/4.2.3/#!/api/Ext.window.Window-cfg-语气 – ArcanisCz 2014-10-24 09:25:15

相关问题