Как узнать, какие символы в строке выделены? - PullRequest
0 голосов
/ 20 апреля 2011

У меня есть приложение, которое заменяет выделенный текст в строке для выбранного символа из списка плиток, которые загружаются динамически символы! Я не знаю, как это сделать, чтобы было в состоянии определить, сколько символов выбрано, если вы выберете символ, а затем загрузить определенные символы (заменить) и, если другие, чем другие символы, если символы не выбраны или не выбраны в качестве цыфры ... тогда сообщение ...

Я сделал только для того, чтобы выделить символ, который заменен выбранным из списка плиток ... Как сделать отдых! пожалуйста помогите ....

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    applicationComplete="contactsService.send()"
    creationComplete="init()" 
    layout="absolute" viewSourceURL="srcview/index.html">
    <fx:Script>
        <![CDATA[

            private function replaceSelect(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.toString()+txt.text.substring(selEnd,txt.text.length)
                }
                lst.visible = false;
            }           

            [Bindable]
            private var cm:ContextMenu;

            private function init():void {
                var cmi:ContextMenuItem = new ContextMenuItem("Special Characters", true);
                cmi.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, cmSelect);
                cm = new ContextMenu();
                cm.hideBuiltInItems();
                cm.customItems = [cmi];

            }

            private function cmSelect(evt:ContextMenuEvent):void {
                lst.visible = true;

            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <mx:HTTPService id="contactsService"
                        resultFormat="e4x"
                        url="symbols.xml"/>
    </fx:Declarations>
    <mx:Panel width="508" height="487" x="20" y="20">
        <mx:TextInput 
            id="txt" 
            text="Test String Flex" 
            contextMenu="{cm}" 
            width="303"/>
        <mx:TileList 
            id="lst" 
            visible="false" 
            dataProvider="{contactsService.lastResult.symb}" 
            columnCount="4"
            columnWidth="25"
            rowCount="3"
            rowHeight="25"
            verticalScrollPolicy="on"
            click="{replaceSelect(event)}"/>
    </mx:Panel>
</mx:Application>

1 Ответ

0 голосов
/ 20 апреля 2011

Чтобы пользователь выбрал STRING, вы можете получить его вот так

var userSelectedText:String  = txt.text.substring(selStr, selEnd);

и выбранный пользователем символ можно получить как

var userSelectedSymbol:String = lst.selectedItem.toString();

, и вы можете использовать массив для ведения истории переотчета как

Объявить массив на уровне класса

var repalceHistory :Array = ne Array();

и Сохранить действие пользователя как

var action:Object = new Object();
action.symbol = userSelectedSymbol;
action.selectedText = userSelectedText;

repalceHistory.push(action);

и может получить историю как

var action:Object = repalceHistory.pop();

Надежды, которые помогают

...