Как я могу ссылаться на TextInput редактируемого ComboBox?

У меня есть редактируемый компонент ComboBox, и я хочу сослаться на отображаемый TextInput, чтобы программно выбрать в нем текст. Это очень просто для TextInput:

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

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

Но я не могу найти способ получить доступ к TextInput редактируемого ComboBox.


person Eric Belair    schedule 03.03.2009    source источник


Ответы (3)


Кажется, что ссылка на TextInput по ЭТОЙ причине не нужна, так как текст выделен по умолчанию.

person Eric Belair    schedule 03.03.2009

Я столкнулся с этой проблемой при использовании ComboBox в качестве элемента DataGrid itemRenderer. Если вам нужно сослаться на TextInput, вы можете переопределить ComboBox и создать геттер, который возвращает защищенный textInput. В моем случае мне нужно было предотвратить автоматический выбор, который происходит, когда ComboBox доступен для редактирования. Глядя на ComboBox, это происходит во время updateDisplayList, поэтому это должно сработать:

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

}
}
person Community    schedule 03.06.2009

Во время события Combobox «Creation Complete» вы можете получить компонент напрямую:

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