2011-03-20 23 views
0

我正在使用火花組合框(我非常喜歡)。我想要做的是讓用戶從cb列表中刪除元素。爲此,我想通過使用自定義(並且非常簡單)的itemRenderer來添加每個cb元素旁邊的刪除按鈕。交互式刪除組合框中的元素

一切似乎沒問題 - 我可以得到一個按鈕顯示出來,而按鈕看起來是互動的(即如果你將鼠標懸停在上面,它的顏色肯定會改變)。但是,當我點擊按鈕時,似乎無法啓動任何事件。我查看了組件的代碼,但沒有被任何天才思想所照亮。我想知道如果有人知道如何讓按鈕拍攝(我可以從那裏拿...)。這裏有一些示例代碼來解釋發生了什麼...

謝謝大家!


<?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

好吧,想通了 - 重寫item_mouseDownHandler和檢查目標類型似乎有伎倆。