как установить позицию курсора Flex Combobox - PullRequest
3 голосов
/ 18 марта 2010

У меня есть реализация комбинированного списка следующим образом: на основе пользовательского ввода (минимум 2 символа) в редактируемом комбинированном списке поставщик данных обновляется и открывается раскрывающийся список, показывая различные наборы данных в зависимости от пользовательского ввода.

Проблема в том, что после открытия раскрывающегося списка курсор возвращается к началу. Так, например, пользователь вводит «ab» и хочет ввести «c», чтобы сформировать строку поиска «abc». Из-за того, что курсор переустанавливает свою позицию на 0, строка поиска вместо этого заканчивается как «cab».

Вот что я уже пробовал (не работает): textInput.mx_internal :: getTextField (). SetSelection (index, index);

где индекс = длина пользовательского ввода. Это выбирает текст из индекса в индекс (который фактически отменяет выделение текста) и должен поместить курсор в конец.

Есть мысли?

Ответы [ 2 ]

4 голосов
/ 18 марта 2010

Вы делаете правильные вещи. Вам просто нужно убедиться, что TextInput имеет фокус , прежде чем установить индекс выбора.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">


    <mx:VBox>

        <mx:TextInput id="input" />

        <mx:Button label="set cursor" click="setCursor()" />

    </mx:VBox>

    <mx:Script>
        <![CDATA[

            public function setCursor ():void {
                var index:Number = input.text.length;
                input.setFocus();
                input.mx_internal::getTextField().setSelection(index, index);
            }

        ]]>
    </mx:Script>

</mx:Application>
0 голосов
/ 27 апреля 2012

А если вы с тех пор перешли на Spark (flex 4)

input.selectRange(index, index);
...