Интерактивно удаляйте элементы из comboBox - PullRequest
0 голосов
/ 20 марта 2011

Я использую комбинированный ящик с искрой (который мне действительно нравится). Я хотел бы разрешить пользователям удалять элементы из списка cb. Для этого я решил добавить кнопку удаления рядом с каждым элементом cb, используя пользовательский (и очень простой) itemRenderer.

Все казалось нормальным - я могу заставить кнопку появляться, и кнопка кажется интерактивной (то есть, если вы наводите курсор на нее, ее цвет определенно меняется). Тем не менее, я не могу получить событие, чтобы запустить, когда я нажимаю на кнопку. Я просмотрел код компонента, но ни одна гениальная мысль не осветила меня. Мне было интересно, если кто-нибудь знает, как получить кнопку, чтобы стрелять (я могу взять ее оттуда ...). Вот пример кода, чтобы объяснить, что происходит ...

спасибо всем!


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

    <fx:Declarations>
        <s:ArrayList id="dp">
            <fx:Object description="aaaa" />
            <fx:Object description="bbbb" />
            <fx:Object description="cccc" />
            <fx:Object description="dddd" />
        </s:ArrayList>
    </fx:Declarations>

    <s:ComboBox id="cb" width="200" x="20" y="20"
                dataProvider="{dp}" labelField="description"
                itemRenderer="ComboBoxItemRenderer.symbolComboBoxRenderer"/>

</s:Application>

и средство визуализации предметов (примечание: я пробовал включать и выключать фазу захвата, но не повезло. Также я пробовал более высокий приоритет, но и там не повезло).

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx" width="100%"
                creationComplete="itemrenderer1_creationCompleteHandler(event)">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import mx.utils.StringUtil;

            import spark.components.ComboBox;

            override public function set data(value:Object):void  
            {
                super.data = value;
            }

            protected function button1_clickHandler(event:MouseEvent):void
            {
                trace("pressed button");
            }

            protected function itemrenderer1_creationCompleteHandler(event:FlexEvent):void
            {
                bt.addEventListener(MouseEvent.CLICK, button1_clickHandler, true, 50);
            }

        ]]>
    </fx:Script>

    <s:HGroup width="100%">
        <s:Label id="labelDisplay" left="1" top="5" bottom="5" width="100%"/>
        <s:Button id="bt" width="7" height="7"/>
    </s:HGroup>
</s:ItemRenderer>

1 Ответ

1 голос
/ 20 марта 2011

хорошо, разобрался - переопределение item_mouseDownHandler и проверка целевого типа, похоже, добились цели.

...