2011-12-15 1 views
0

カスタマイズコンポーネントを作成せずに、コンボボックスの子(テキスト入力とボタン)にアクセスする必要があります。私は、カスタムコンポーネントを作成することがベストプラクティスであることを知っていますが、まだtextinputのようなコンボボックスの子にアクセスしてイベントを聞く必要があります。どんな助け?フレックスコンボボックスの子(textInput、button)へのアクセス

答えて

0

あなたは、このようなあなたのコンボボックスのTextInputのイベントを追加することができますにtextInputオブジェクトがコンボボックスオブジェクト(myComboBox.textInput)の子であるため、

myComboBox.textInput.addEventListener(TextOperationEvent.CHANGE, myFunction); 


はここで完全な作業例

<?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" creationComplete="creationCompleteHandler(event)"> 

    <fx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 
      import mx.events.FlexEvent; 

      import spark.events.IndexChangeEvent; 
      import spark.events.TextOperationEvent; 

      [Bindable] 
      private var _dp:ArrayCollection = new ArrayCollection([ 
       {id : "1", name : "Paul"}, 
       {id : "2", name : "Andrew"}, 
       {id : "2", name : "Bob"} 
      ]); 

      protected function creationCompleteHandler(event:FlexEvent):void 
      { 
       myComboBox.textInput.addEventListener(TextOperationEvent.CHANGE, showTextInputValue); 
       myComboBox.addEventListener(IndexChangeEvent.CHANGE, showComboValue); 
      } 

      protected function showTextInputValue(event:TextOperationEvent):void 
      { 
       textFieldValue.text = "myComboBox.textInput : " + event.currentTarget.text; 
      } 

      protected function showComboValue(event:IndexChangeEvent):void 
      { 
       if (event.newIndex > -1) 
        comboBoxValue.text = "myComboBox selected item is : " + myComboBox.selectedItem.name; 
      } 

     ]]> 
    </fx:Script> 

    <s:layout> 
     <s:VerticalLayout/> 
    </s:layout> 

    <s:ComboBox id="myComboBox" labelField="name" dataProvider="{_dp}"/> 

    <mx:Spacer height="100"/> 

    <s:Label id="textFieldValue"/> 

    <s:Label id="comboBoxValue"/> 

</s:WindowedApplication> 
です
0

テキストフィールドを置き換えるために(プロパティ「あなたはコンボボックスにアクセスすることはできません所望の表示オブジェクト(例えばif (event.target is TextField) doStuff();)を指すピンにSタイプ」コンボボックスにEvent.ADDEDのイベントリスナーを追加し、event.targetを確認することができますまたは異なるボタンを使用して)、ステージに追加されたインスタンスを変更できます。

関連する問題