Pergunta

Eu tenho um componente ComboBox editável e eu quero fazer referência a TextInput que é mostrado, para programaticamente selecionar o texto nele. Isto é muito simples em um TextInput:

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

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

Mas eu não posso encontrar alguma maneira de acessar o TextInput de um ComboBox editável.

Foi útil?

Solução

Parece que referenciando o TextInput para ESTA razão é desnecessária, uma vez que o texto é selecionado por padrão.

Outras dicas

Eu corri para este problema ao usar uma caixa de combinação como um DataGrid itemRenderer. Se você precisar fazer referência a TextInput você pode substituir ComboBox e criar um getter que retorna a textInput protegida. No meu caso eu precisava para evitar a auto-seleção de que ocorre quando uma caixa de combinação é editável. Olhando para ComboBox, isso ocorre durante updateDisplayList por isso deve fazer o truque:

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 o evento "Criação completa" da caixa de combinação, você poderia obter o componente diretamente:

private function creationCompleteEvt ( evt:FlexEvent ) : void
{
    var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
    targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top