2009-03-03 11 views
0

J'ai un composant ComboBox modifiable et je veux référencer le TextInput qui est affiché, afin de sélectionner le texte par programmation. Ceci est très simple sur un TextInput:Comment puis-je référencer le TextInput d'un ComboBox modifiable?

private function selectNameText():void 
{ 
    nameTextInput.selectionBeginIndex = 0; 

    nameTextInput.selectionEndIndex = nameTextInput.text.length; 
} 

Mais je ne peux pas trouver un moyen d'accéder au TextInput d'une zone de liste déroulante modifiable.

Répondre

1

Il semble que le fait de référencer TextInput pour CETTE raison est inutile, puisque le texte est sélectionné par défaut.

0

J'ai rencontré ce problème lors de l'utilisation d'une zone de liste déroulante en tant que itemRenderer DataGrid. Si vous avez besoin de référencer le TextInput, vous pouvez remplacer ComboBox et créer un getter qui renvoie le textInput protégé. Dans mon cas, je devais empêcher la sélection automatique qui se produit lorsqu'un ComboBox est modifiable. En regardant ComboBox, cela se produit au cours de updateDisplayList ce qui devrait faire l'affaire:

package com.whatever.controls 
{ 

import mx.controls.ComboBox; 

public class EditableComboBox extends ComboBox 
{ 

    public function EditableComboBox() 
    { 
     super(); 
    } 

    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
    { 
     super.updateDisplayList(unscaledWidth, unscaledHeight); 

     if (editable) 
     { 
      textInput.selectionBeginIndex = text.length; 
      textInput.selectionEndIndex  = text.length; 
     } 
    } 

} 
} 
0

Au cours de l'événement « Création complète » du Combobox, vous pouvez obtenir le composant directement:

private function creationCompleteEvt (evt:FlexEvent) : void 
{ 
    var targTextInput:UITextInput = UITextInput(myComboBox.getChildAt(2)); 
    targTextInput.setSelection(0, targTextInput.selectionEndIndex); 
}