2011-03-18 16 views
5

मेरे पास एक विंडो है जहां मैं शीर्ष पर एक टूलबार जोड़ना चाहता हूं, और शेष क्षेत्र में सामग्री लोड करने के लिए एक पैनल जोड़ना चाहता हूं। दुर्भाग्यवश, जब मैं सामग्री पैनल जोड़ता हूं तो टूलबार एक असमान आकार में फैलता है। मैंने आकार को हार्डकोड करने का प्रयास किया है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। मैं क्या गलत कर रहा हूं?ExtJS टूलबार सही ढंग से प्रतिपादन नहीं कर रहा है

प्रतिक्रिया के लिए अग्रिम धन्यवाद:

// Main application entry point 
    Ext.onReady(function() { 
    var loginWin; 
    var mainWin; 
    var content; 

    var form = new Ext.form.FormPanel({ 
     baseCls: 'x-plain', 
     labelWidth: 70, 
     //url:'', 
     defaultType: 'textfield', 

     items: [{ 
      fieldLabel: ' User Name', 
      name: 'username', 
      anchor:'100%' // anchor width by percentage 
     },{ 
     inputType: 'password', 
     fieldLabel: ' Password', 
      name: 'password', 
      anchor: '100%' // anchor width by percentage 
     }] 
    }); 

    content = new Ext.Panel({ 
     baseCls: 'x-plain', 
     layout:'fit', 
     anchor:'90%', 
     height: 500, 
     items: [ 
      { 
       title: 'blah', 
       html: '<div>hello</div>' 
      } 
     ]  
    }); 

    var tb = new Ext.Toolbar({ 
     height: 100, 
     //renderTo: mainWin 
    }); 
    tb.render('toolbar'); 

    var toolbarPanel = new Ext.Panel({ 
     layout:'fit', 
     anchor:'10%', 
     width:100, 
     items: tb 
    }); 

    var menu = new Ext.menu.Menu({ 
     id: 'mainMenu', 
     style: { 
      overflow: 'visible'  // For the Combo popup 
     }, 
     items: [ 
      { text: 'blah' 
      }, 
      { text: 'blah2' 
      } 
     ] 
    }); 

    tb.add(
     { 
      text: 'Classes', 
      iconCls: 'bmenu', 
      handler: function(){ alert('blah'); } 
     }, 
     { 
      text: 'GPA', 
      iconCls: 'bmenu', 
      handler: function(){ alert('blah'); } 
     }, 
     { 
      text: 'Semester Schedule', 
      iconCls: 'bmenu', 
      handler: function(){ 
      } 
     }, 
     { 
      text: 'Help', 
      iconCls: 'bmenu', // <-- icon 
      handler: function(){ alert('blah'); } 
     } 
    ); 
    tb.doLayout(); 

    if(!mainWin){ 
     mainWin = new Ext.Window({ 
      applyTo:'main-win', 
      resizable: false, 
      modal: true, 
      layout:'fit', 
      width:'80%', 
      height:'100%', 
      y: 0, 
      closeAction:'hide', 
      plain: true, 
      items: [ toolbarPanel, content ] 
     }); 
    } 

    if(!loginWin){ 
     loginWin = new Ext.Window({ 
      applyTo:'hello-win', 
      closable:false, 
      layout:'fit', 
      width:300, 
      height:130, 
      closeAction:'hide', 
      plain: true, 

      items: form, 

      buttons: [{ 
       text:'Login', 
        handler: function(){ 
       loginWin.hide(); 
         mainWin.show(); 
      } 
      },{ 
       text: 'Close', 
       handler: function(){ 
       loginWin.hide(); 
      } 
       }] 
     }); 
     loginWin.show(this); 
    } 

    }) 

उत्तर

4

लगता है आप को अनुचित तरीके से उपकरण पट्टी के साथ काम कर रहे हैं:

var toolbarPanel = new Ext.Panel({ 
    layout:'fit', 
    anchor:'10%', 
    width:100, 
    items: tb 
}); 

यहाँ आप इस पैनल के लिए कह रहे हैं, "अपने एक आइटम ले लो, और के रूप में यह कर मेरे रूप में बड़ा "। यही वह लेआउट "फिट" करता है। तो स्वाभाविक रूप से, यह टूलबार आपको items में देगा और इसे पैनल के रूप में बड़ा विस्तारित करेगा।

Ext.Panel वस्तुओं में tbar कॉन्फ़िगरेशन संपत्ति है जो आपके टूलबार को पकड़ने के लिए डिज़ाइन की गई है। आपको टूलबार के लिए पैनल की आवश्यकता नहीं है और आपकी सामग्री के लिए कोई अन्य पैनल नहीं है। इसके बजाय, अपने सामग्री पैनल में टूलबार जोड़ें। साथ ही, टूलबार को स्पष्ट रूप से प्रस्तुत करने, या तथ्य के बाद आइटम जोड़ने के बारे में चिंता न करें।

content = new Ext.Panel({ 
    baseCls: 'x-plain', 
    layout:'fit', 
    tbar: [ 
    { 
     text: 'Classes', 
     iconCls: 'bmenu', 
     handler: function(){ alert('blah'); } 
    }, 
    { 
     text: 'GPA', 
     iconCls: 'bmenu', 
     handler: function(){ alert('blah'); } 
    }, 
    { 
     text: 'Semester Schedule', 
     iconCls: 'bmenu', 
     handler: function(){ 
     } 
    }, 
    { 
     text: 'Help', 
     iconCls: 'bmenu', // <-- icon 
     handler: function(){ alert('blah'); } 
    }], 
    items: [ 
     { 
      title: 'blah', 
      html: '<div>hello</div>' 
     } 
    ]  
}); 

भी ध्यान रखें कि मैं बाहर ले: यह बेहतर और अधिक वस्तुओं को एक साथ लिखने के लिए जहां वे प्रारंभ दिया जाएगा (अगर यह संभव है) स्पष्ट है

यहाँ कैसे मैं अपनी सामग्री पैनल बनाने की सिफारिश करेंगे है आपके पैनल की height विशेषता, क्योंकि इसे "फिट" लेआउट वाली विंडो में रखा जा रहा है, ताकि विंडो सभी आकारों (पैनल पर स्वयं निर्दिष्ट करने की आवश्यकता न हो)।

mainWin = new Ext.Window({ 
     applyTo:'main-win', 
     resizable: false, 
     modal: true, 
     layout:'fit', 
     width:'80%', 
     height:'100%', 
     y: 0, 
     closeAction:'hide', 
     plain: true, 
     items: [ content ] 
    }); 

शुभकामनाएँ!

+0

एक आकर्षण की तरह काम किया, और स्पष्टीकरण के लिए धन्यवाद! – maximus

0

ध्यान दें कि Ext.Toolbar का डिफ़ॉल्ट minHeight मान सेट ("2.6em", iirc) - आपको इसे अपनी कॉन्फ़िगरेशन में ओवरराइड करना पड़ सकता है।

0

यह आपकी समस्या नहीं है, लेकिन मुझे मिनीडिज़ कोड को प्रतिपादित करने में कोई समस्या नहीं थी। आइटम के बीच टबर में स्पेसर था, भले ही असम्बद्ध टूलबार सही ढंग से प्रस्तुत किया गया हो। मुझे लगता है कि सेन्चा के पास इसके लिए एक समर्पित कार्य है, लेकिन यह इसे ठीक करता है।

}, ' ', { 
संबंधित मुद्दे