Domanda

Ho un componente ComboBox modificabile e voglio fare riferimento al TextInput che viene mostrato, al fine di selezionare programmaticamente il testo in esso. Questo è molto semplice su un TextInput:

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

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

Ma non riesco a trovare alcun modo per accedere a TextInput di un ComboBox modificabile.

È stato utile?

Soluzione

Sembra che non sia necessario fare riferimento a TextInput per il motivo QUESTO , poiché il testo è selezionato per impostazione predefinita.

Altri suggerimenti

Ho riscontrato questo problema durante l'utilizzo di ComboBox come DataRid itemRenderer. Se è necessario fare riferimento a TextInput, è possibile ignorare ComboBox e creare un getter che restituisca textInput protetto. Nel mio caso, avevo bisogno di impedire la selezione automatica che si verifica quando un ComboBox è modificabile. Guardando ComboBox, questo si verifica durante updateDisplayList quindi questo dovrebbe fare il trucco:

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;
        }
    }

}
}

Durante la creazione della casella combinata " Completa " evento, è possibile ottenere direttamente il componente:

private function creationCompleteEvt ( evt:FlexEvent ) : void
{
    var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
    targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top