Как я могу ссылаться на TextInput редактируемого ComboBox? - PullRequest
0 голосов
/ 03 марта 2009

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

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

    nameTextInput.selectionEndIndex = nameTextInput.text.length;
}

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

Ответы [ 3 ]

1 голос
/ 03 марта 2009

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

0 голосов
/ 23 июня 2014

Во время события Combobox «Создание завершено», вы можете получить компонент напрямую:

private function creationCompleteEvt ( evt:FlexEvent ) : void
{
    var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
    targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}
0 голосов
/ 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;
        }
    }

}
}
...