2011-04-15 14 views
7

मैं ExtJS का उपयोग कर रहा हूं और डेस्कटॉप जैसी एप्लिकेशन चल रहा हूं। एक चीज जो मुझे परेशान कर रही है वह तब होती है जब एक नई विंडो खोली जाती है (व्यूपोर्ट के केंद्र क्षेत्र के भीतर बाध्य होती है) यह हमेशा व्यूपोर्ट के ऊपरी बाईं ओर खुलती है।ExtJS नई विंडो खोलने के रूप में

एकाधिक विंडो खोल रहे हैं, तो मैं उन्हें टाइल करना चाहते हैं न तो वे सिर्फ एक दूसरे के ...

किसी भी विचार के ontop बैठते हैं?

(मेरी प्रारंभिक सोचा सोचा WindowMgr में खिड़कियों चक्र के लिए गया था और अगर वहाँ वर्तमान में 0,0 में से एक है की जाँच करें। यदि हाँ, 100,100 आदि की जांच जब तक कि एक नि: शुल्क है।)

आशा इस समझ में आता है!

उत्तर

5

मैं बहुत ज्यादा कुछ के रूप में आप पहले से ही वर्णन:

Ext.Window.prototype._autoTile = function() { 
    var x = 10, 
     y = 10; 

    Ext.WindowMgr.each(function(win) { 
     if (win === this) return; 

     var pos = win.getPosition(); 

     if (pos[0] > (x - 15) 
      && pos[0] < (x + 15) 
      && pos[1] > (y - 15) 
      && pos[1] < (y + 15) 
     ) { 
      x += 15; 
      y += 15; 
     } 
    }, this); 

    this.setPagePosition(x, y); 
}; 

Ext.Window.prototype.initComponent = 
    Ext.Window.prototype.initComponent.createSequence(function() { 
     if (this.autoTile) { 
      this.on('show', this._autoTile, this, {single: true}); 
     } 
    }); 

var win = new Ext.Window({ 
    width: 300, 
    height: 300, 
    autoTile: true 
}); 

win.show(); 

इस कार्यान्वयन मेरी जरूरतों के लिए पर्याप्त था, लेकिन उसका स्थान खिड़की से बाहर टूट रहा है कि क्या के लिए चेक के रूप में ऐसी बातों के साथ और अधिक जटिल किए जाने के लिए खड़े हो सकता है व्यूपोर्ट सीमा।

+0

उत्तर के लिए धन्यवाद! मुझे यह पसंद है कि यह घटक के लिए एक विशेषता के रूप में कैसे जोड़ा गया, महान काम! – neolaser

+0

दृष्टिकोण से प्यार है, लेकिन यह ExtJS4 पर काम कर रहा है? मुझे एक 'अपरिचित बनावट पर्याप्तता' त्रुटि मिल रही है। – JayCrossler

+0

यह ExtJS 3. v4 के कई परिवर्तनों में से एक के लिए लिखा गया था इस तरह के createSequence पद्धति के रूप में वैश्विक वस्तुओं, को जोड़ा गया तरीकों को हटाने के फंक्शन को जोड़ा गया था। Ext.Function.createSequence को कॉल करने के साथ इसे प्रतिस्थापित किया जा सकता है, लेकिन कोई गारंटी नहीं है कि बाकी काम करेंगे। – owlness

1

में बनाया गया यह तो मुझे लगता है दृष्टिकोण आप ऊपर उल्लिखित काफी उचित है क्या करने के लिए कुछ भी नहीं है। यह भी ध्यान रखें कि आपके आवेदन की अनुमति के आधार पर आपको छिपी/न्यूनतम/अधिकतम विंडो से निपटने की आवश्यकता हो सकती है।

1

के रूप में कहा गया है कि वहाँ कोई अंतर्निहित कार्यक्षमता है इस का समर्थन करने के।

, इस बारे में एक old discussion thread on the ExtJS forums नहीं है अपने संस्करण के लिए 2.x तथापि, लेकिन शायद आप पिक कर सकते हैं आपकी कार्यान्वयन के लिए कुछ विचार।

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