Question

Je suis un débutant en flex. J'ai besoin de désactiver certains des onglets d'une barre de dialogue spécifiée, par configuration. Je n'arrive pas à parcourir les onglets de la barre d'onglets. Si j'utilise la commande getChildAt (), le bouton de tabulation ne sera pas désactivé, mais le contenu de ce bouton de tabulation ne sera donc pas utile.

Merci et salutations, Mohit Ranka

Était-ce utile?

La solution

Lorsque vous posez des questions sur le code, postez toujours un scénario de test minimal. getChildAt () fonctionnera. Votre code contient donc autre chose.

<mx:Script>
    <![CDATA[
        import mx.events.ItemClickEvent;
        import mx.controls.tabBarClasses.Tab;
        private function clickTab(event:ItemClickEvent):void {
            var target:TabBar = event.currentTarget as TabBar;
            var currTab:Tab;
            var parity:int = event.index & 1;
            /* disable all tabs at indices w/ same parity as clicked tab;
               enable tabs of opposite parity.
             */
            for (var i=0; i<target.numChildren; ++i) {
               currTab = target.getChildAt(i) as Tab;
               currTab.enabled = (i&1)^parity;
            }
        }
    ]]>
</mx:Script>

<mx:TabBar id="someTabs" itemClick="clickTab(event)">
    <mx:dataProvider>
        <mx:String>Foo</mx:String>
        <mx:String>Bar</mx:String>
        <mx:String>Baz</mx:String>
        <mx:String>Bam</mx:String>
    </mx:dataProvider>
</mx:TabBar>

Autres conseils

pourquoi ne pas utiliser un bindable pour votre configuration?

quelque chose comme

   enabled="{yourConfiguration.lastResult.enabled}"

Pour ceux qui veulent une réponse efficace pour Flex 4.5 (probablement aussi Flex 4). J'ai finalement trouvé une solution. Cela me ressemble, mais Adobe ne répond pas à l'appel et cela fonctionne pour moi. Voici un exemple simplifié.

<!-- component that has the the TabBar in it... -->

<fx:Script>
    <![CDATA[
//imports here

import mx.core.UIComponent;

//imports

private function setTabEnabled(index:int,enabled:Boolean):void{
    var theTab:UIComponent = theTabBar.dataGroup.getElementAt(index) as UIComponent;
    if(theTab){theTab.enabled = enabled;}
}
]]>
</fx:Script>

<s:TabBar id="theTabBar"
    dataProvider="{viewStack}"/>

<mx:ViewStack id="viewStack">
    <s:NavigatorContent label="0th Tab">
        <!-- ...Content -->
    </s:NavigatorContent>
    <s:NavigatorContent label="1st Tab">
        <!-- ...Content -->
    </s:NavigatorContent>
    <s:NavigatorContent label="2nd Tab">
        <!-- ...Content -->
    </s:NavigatorContent>
</mx:ViewStack>

<!-- rest of the component that has the the TabBar in it... -->

Ensuite, vous appelez simplement setTabEnabled (theTabIndex, trueFalse) dans un gestionnaire d'événements associé à celui qui décide de la raison pour laquelle l'onglet est activé ou non.

Je devrais étendre le TabBar pour supporter cela, mais j'ai déjà passé assez de temps à essayer de le comprendre.

Happy Coding = D

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top