2011-05-19 11 views
8

माइक्रोसॉफ्ट ओएस (एक्सपी, विस्टा, 7 आदि) में एक खिड़की की तरह ...ext 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(); 

समस्या है, यह सिर्फ मुख्य विंडो के शरीर को निष्क्रिय, उपयोगकर्ता अभी भी मुख्य टूलबार acces कर सकते हैं , इसे बंद करने के लिए भी ..

मेरा प्रश्न है कि पूर्ण मोडल कैसे करें? या यदि यह नहीं किया जा सकता है, तो मुख्य विंडो को अक्षम करने के लिए, यदि मोडल विंडो दिखाई दे, तो मैंने मोडल जीत पर श्रोता शो का उपयोग किया है, लेकिन समस्या यह है कि मैं इस श्रोता से मुख्य विंडो तक नहीं पहुंच सकता ...

संपादित करें :

यह मेरा कोड अब तक है:

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

अद्यतन जवाब पर एक नजर है। –

+0

@Abdel, आपकी मदद के लिए धन्यवाद .. मेरा संपादन देखें .. मुझे फिर से थोड़ी मदद चाहिए .. –

उत्तर

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

नहीं, .. ऐसा नहीं, .. मेरा सवाल स्पष्ट नहीं है ??? मेरे पास एक मुख्य विंडो है .. उपयोगकर्ता की तुलना में टूलबार बटन पर क्लिक करें .. यह एक नई विंडो पॉप अप करता है .. मैं चाहता हूं कि उपयोगकर्ता मुख्य विंडो को acces नहीं कर सकता .. इसलिए मुझे यह निर्दिष्ट करने के लिए 'ownerCt' की आवश्यकता है कि यह कौन है माता-पिता .. यह" फ़ोल्डर विकल्प "इन" एक्सप्लोरर "(विंडो) में, उपयोगकर्ता फ़ोल्डर विकल्प बंद होने तक एक्सप्लोरर तक नहीं पहुंच सकता .. –

+0

लेकिन उपयोगकर्ता अभी भी नया एक्सप्लोरर या अन्य एप्लिकेशन खोल सकता है ... –

22

इन दिनों आप मोडल सेट: सच

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

यह एक बच्चे की खिड़की पर लागू होता है, है ना? – jcolebrand

+1

देर उत्तर: हाँ :) – emolaus

+0

हाँ, मोडल कॉन्फ़िगरेशन संपत्ति जाने का तरीका है :) Docu: http://docs.sencha.com/extjs/4.2.3/#!/api/Ext.window.Window-cfg- मोडल – ArcanisCz

संबंधित मुद्दे