Flex. Заменить выделенный текст в текстовом вводе
Как мне сделать функцию, которая заменяет выделенный текст в текстовом ВХОДЕ на символ выбранного из каждого списка?
Спасибо
2 ответа
Пожалуйста, попробуйте этот образец, это может помочь полное спасибо
Пояснение: если вы наберете "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>
Этот 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>
РЕДАКТИРОВАНИЕ: требуется модификация Вставить файл 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)}"/>
Примечание. Никаких других изменений в программе не требуется.
Надеюсь, это поможет