Pregunta

Tengo un componente ComboBox editable y quiero hacer referencia al TextInput que se muestra, para seleccionar mediante programación el texto que contiene. Esto es muy sencillo en TextInput:

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

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

Pero no puedo encontrar ninguna forma de acceder a TextInput de un ComboBox editable.

¿Fue útil?

Solución

Parece que no es necesario hacer referencia a TextInput por ESTE , ya que el texto está seleccionado de forma predeterminada.

Otros consejos

Me encontré con este problema cuando utilizaba un ComboBox como un DataGrid itemRenderer. Si necesita hacer referencia a TextInput, puede anular ComboBox y crear un captador que devuelva el textInput protegido. En mi caso, necesitaba evitar la selección automática que se produce cuando un ComboBox es editable. Mirando ComboBox, esto ocurre durante updateDisplayList, por lo que debería hacer el truco:

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 " Creación completa de Combobox " evento, puede obtener el componente directamente:

private function creationCompleteEvt ( evt:FlexEvent ) : void
{
    var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
    targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top