2011-05-19 59 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

相關問題