2010-08-20 2 views
0

J'écris un composant personnalisé dans Flex 3.2 qui étend le composant du panneau. Après qu'un utilisateur effectue une certaine action, je voudrais cacher la zone de contenu principal dans le composant Panel, ainsi que la barre de contrôle si une est spécifiée. auriez vous des idées pour faire ça? controlBar.visible ne semble pas cacher la barre de contrôle, et je ne connais pas d'autre moyen facile d'accéder à la zone de contenu principal en plus d'itérer tous les enfants du panneau principal, et je voudrais éviter cela si possible. MerciMasquage du volet de contenu dans un panneau Flex

Répondre

0

Impossible de définir un conteneur principal, HBox ou VBox etc ... dans votre Panel qui contiendrait tous les enfants, alors vous pouvez basculer la visibilité de ce conteneur en fonction de l'action de l'utilisateur.

Quant au ControlBar, vous devriez être en mesure de changer la valeur de visibilité ...

0

La raison pour laquelle vous ne pouvez pas sembler cacher la controlbar, parce que vous ne définissez que sa propriété visible - cela prend encore c'est de l'espace. Donc, pour vraiment "le cacher", faites ceci:

myControlBar.includeInLayout = false;

En outre, pour cacher tout ce que vous les enfants, ne nécessite que d'une simple boucle:

for each (var oChild:DisplayObject in idPanel.getChildren()) { 
    oChild.visible = false; 
} 

Ainsi, l'application entière ressemblerait à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> 

<mx:Script> 
    <![CDATA[ 
     private function doit(): void { 
      idControl.visible = false; 
      idControl.includeInLayout = false; 

      for each (var oChild:DisplayObject in idPanel.getChildren()) { 
       oChild.visible = false; 
      } 
     } 
    ]]> 
</mx:Script> 

<mx:Button x="10" y="10" label="Button" click="doit()"/> 
<mx:Panel x="83" y="10" width="250" height="200" layout="absolute" id="idPanel"> 
    <mx:CheckBox x="10" y="10" label="Checkbox"/> 
    <mx:DateField x="10" y="40"/> 
    <mx:ControlBar id="idControl"> 
    </mx:ControlBar> 
</mx:Panel> 

</mx:Application> 

Hope that helps!

+0

Vous pouvez également redimensionner le panneau une fois cette opération terminée. Une autre idée pourrait être d'utiliser un mx: State, dans lequel il suffit de définir l'état de l'élément pour cacher/montrer tous ses enfants. – BigWorld

+0

@Rosswil - Est-ce que le code ci-dessus a résolu votre problème? – BigWorld

Questions connexes