Flex. Заменить выделенный текст в текстовом вводе - PullRequest
0 голосов
/ 11 апреля 2011

Как сделать функцию, которая заменяет выделенный текст в текстовом ВХОДЕ на символ выбранного из каждого списка?

Спасибо

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Этот Sampe Заменить выделенный текст в TextInput на текст списка в списке щелчков

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            [Bindable]
            private var arr:Array = new Array(
                                            {msg:"Hello", data:"$"},
                                            {msg:"Bye", data:"@"}
                                            );

            private function replaceSelection(event:MouseEvent):void
            {


                    var obj:Object = lst.selectedItem;
                    var selStr:int = txt.selectionBeginIndex;
                    var selEnd:int = txt.selectionEndIndex;

                    if((lst.selectedItem != null)&&(selStr!=selEnd))
                    {
                         txt.text = txt.text.substring(0,selStr)+lst.selectedItem.msg.toString()+txt.text.substring(selEnd,txt.text.length)
                    }
            }           

        ]]>
    </mx:Script>
    <mx:VBox>
        <mx:TextInput id="txt" />
        <mx:List id="lst" dataProvider="{arr}" labelField="msg" click="{replaceSelection(event)}"/>
    </mx:VBox>

</mx:Application>

EDITED : требуется изменение Вставить файл XML в качестве источника данных

Файл XML "messages.xml "{Он находится в той же / корневой папке Flex Source}

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item><msg>Hello</msg></item>
    <item><msg>Bye</msg></item>
</root>

Встраивание XML-файла в приложение Flex с использованием компонента MXML

<mx:XML id="xml" source="messages.xml" />

Модификация в List Control, для работыс XML

<mx:List id="lst" dataProvider="{xml.item}" labelField="msg" click="{replaceSelection(event)}"/>

Примечание : никаких других изменений в программе не требуется

Надеемся, это поможет

1 голос
/ 11 апреля 2011

Пожалуйста, попробуйте этот пример, это может помочь. Спасибо

Объяснение Если вы введете «Imran $», он заменит его на «Imran Hello» при изменении текста.любое другое событие

код

 <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Script>
            <![CDATA[
                import mx.events.FlexEvent;

                private var lst:Array = new Array(
                                                {msg:"Hello", data:"$"},
                                                {msg:"Bye", data:"@"}
                                                );
                private function textchanged(event:Event):void
                {

                    var len:int = txt.text.length;
                    if(len!=0)
                    {
                        var msg:String = getMessage(txt.text.charAt(len-1)); 
                        if(msg!= null)
                        {
                            txt.removeEventListener(Event.CHANGE,textchanged);
txt.addEventListener(FlexEvent.UPDATE_COMPLETE,updateComplete);
                            txt.text = txt.text.slice(0, len-1) + " "+ msg;
                        }
                    }
                }

                private function updateComplete(event:FlexEvent):void
                {
                    txt.addEventListener(Event.CHANGE,textchanged);
                }

                private function getMessage(data:String):String
                {
                    var msg:String = null;
                    for each(var obj:Object in lst)
                    {
                        if(obj.data == data)
                        {
                            msg = obj.msg;
                            break;
                        }
                    }
                    return msg;
                }
            ]]>
        </mx:Script>
        <mx:TextInput id="txt" change="textchanged(event)" />

    </mx:Application>
...