Скрыть кнопку в панели кнопок

Мне было интересно, есть ли способ скрыть определенную кнопку в панели кнопок. В соответствии с этим ответом (и ссылкой, приведенной во втором ответе) Отключение отдельных кнопок на панели кнопок Мне нужно использовать метод getChildAt для ButtonBar, но когда я это делаю, я получаю пользовательский объект скина, а не объект Button. Мне было интересно, как я могу получить доступ к объекту Button.

Спасибо!

1 ответ

Решение

При условии, что все кнопки на панели кнопок будут отображаться одновременно, и вам не понадобятся полосы прокрутки...

С помощью Spark ButtonBar вы можете напрямую получить доступ к части скина, чтобы получить доступ к кнопке. Концептуально что-то вроде этого:

var button : Button = mySparkButtonBarInstance.dataGroup.getElementAt(SomeIndex);
button.visible = false; // or true
button.includeInLayout = false;  // or true

Это не будет работать, если ваш ButtonBar может использовать виртуальные макеты и требует прокрутки.


Изменить: Вот рабочий код, демонстрирующий эту технику:

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[
            import mx.core.IVisualElement;
            protected function button1_clickHandler(event:MouseEvent):void
            {
                trace(buttonBar.dataGroup.getElementAt(0));
                var button :IVisualElement = buttonBar.dataGroup.getElementAt(0);
                button.visible = false; // or true
                button.includeInLayout = false;  // or true         }
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <s:layout>
        <s:VerticalLayout paddingLeft="20" paddingTop="20"/>
    </s:layout>

    <s:ButtonBar id="buttonBar">  
        <mx:ArrayCollection>
            <fx:String>Flash</fx:String> 
            <fx:String>Director</fx:String> 
            <fx:String>Dreamweaver</fx:String> 
            <fx:String>ColdFusion</fx:String> 
        </mx:ArrayCollection>
    </s:ButtonBar>

    <s:Button label="Remove" click="button1_clickHandler(event)" />

</s:WindowedApplication>
Другие вопросы по тегам