2010-09-18 13 views
0

Pour une raison quelconque, Ext.Panel.getTopToolbar() renvoie un tableau d'objets (les éléments de la barre d'outils, mais NOT la barre d'outils) et non une barre d'outils ext. Pour cette raison, je n'arrive pas à masquer une barre d'outils déjà définie. Comment dois-je procéder?Comment cacher la barre d'outils supérieure d'un Ext.Panel? (ExtJS 2.0)

Exemple de code:

function (panel) 
{ 
    alert(panel.getTopToolbar()); // displays the list of elements in the toolbar 
    panel.getTopToolbar().hide(); // error: "hide" is not a function 
} 

Répondre

0

Il devrait fonctionner, il semble que vous utilisez peut-être topToolbar comme config au lieu d'utiliser tbar comme config? Si vous définissez une config tbar il est instancié et enregistré comme topToolbar qui est l'instance Ext.Toolbar exposée par getTopToolbar(). Si vous écrasez topToolbar directement, vous risquez de voir ce problème.

Vous trouverez peut-être ce bloc de code dans Panel.onRender (vous devrez inclure ce fichier directement) et définir un point d'arrêt dans Firebug pour voir ce qui se passe:

if(this.tbar && this.topToolbar){ 
     if(this.topToolbar instanceof Array){ 
      this.topToolbar = new Ext.Toolbar(this.topToolbar); 
     } 
     this.topToolbar.render(this.tbar); 
    } 
+0

Pas vraiment. J'ai mis le tbar en instanciant le Exp.Panel. Vous voulez dire que ce qui se passe pourrait être expliqué si panel.topToolbar a été défini sur un tableau? –

+0

Vous devez utiliser Firebug et découvrir ce que panel.getTopToolbar() retourne réellement. Il n'y a aucun moyen pour moi de deviner. Par défaut, votre code devrait fonctionner, donc quelque chose doit se passer en dehors de ce que vous avez posté. –

0
panel.getTopToolbar().setVisible(false);
+0

Vous devriez ajouter une explication de pourquoi vous pensez que cela aide. – Miguel

0

En 4.2.1 ce qui fonctionne pour moi est:

  var topToolbar = Ext.create('Ext.toolbar.Toolbar', { 
       dock: 'top', 
       width: 'auto', 
       id: 'mytoolbar', 
       hidden: true, 
       items: [...] 
      }); 


      var p = Ext.create('App.view.MyCustomPanel', { 
       html: 'test', 
      }); 

      if (userCanSeeToolbar) { 
       p.addDocked(topToolbar); 
      } 

Ensuite, je peux dynamiquement afficher/masquer la barre d'outils:

/* if (userCanSeeToolbar) { */ 
p.getDockedComponent('mytoolbar').show(); 
p.getDockedComponent('mytoolbar').hide();