2011-04-11 42 views
0

如何創建一個函數,用於替換每個列表中選定文本的符號上的文本INPUT中的選定文本?Flex。替換文本輸入中的選定文本

謝謝

+0

請詳細 – Imran 2011-04-11 08:17:05

+0

我有一個解釋無需其他變化文本輸入 我必須是鼠標來選擇文本。的TextInput \t \t X = 「422」 \t \t Y = 「270」 \t \t WIDTH = 「300」 文本=「你好塞爾吉,如何:比如我的名字,並與名單上的 Sersh 2011-04-11 08:24:30

+0

換句話說,他想要做一些靈活的事情,你可以用excel和word來做(上帝,我討厭自己這麼說),你在哪裏鏈接某個表到信中的某個地方。 (例如發送個性化廣告的廣告系列:您好,我已經爲您達成了協議,他希望在文本輸入中用鼠標選擇文本,然後按下按鈕以替換選定的文本(並非全部 – Jozzeh 2011-04-11 08:50:23

回答

1

請試試這個樣本可以幫助充滿感激

如果你輸入「伊姆蘭$」將與「伊姆蘭你好」取代它的文字改變事件中,你可以還可以使用任何其他事件

代碼

<?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> 
+0

我不太瞭解英文,我來自俄羅斯 但是你不理解我......我必須從我的文本中替換選定的文本INPUT 我選擇「Sergii」,當你點擊任何名稱的名單..我的名字被替換爲選擇! – Sersh 2011-04-11 09:12:57

+0

請檢查我的第二個答案 – Imran 2011-04-11 09:16:19

+0

非常感謝你Imran 。這正是我需要的 – Sersh 2011-04-11 10:06:46

1

這SAMPE上單擊列表

<?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> 

通過替換列表文本中的TextInput選定文本格式編輯:修改需要嵌入XML文件作爲數據源

XML文件「messages.xml」 {其在相同/ Flex源的根文件夾}

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

在Flex應用程序Embeding XML文件,使用MXML組件

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

修改的列表控制,用於處理XML

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

注意:在計劃

希望這將有助於

+0

非常感謝伊姆蘭。這正是我所需要的 – Sersh 2011-04-11 09:47:59

+0

你很歡迎,所以它應該被接受的解決方案:) – Imran 2011-04-11 10:34:03

+0

Imran,並且可以從XML文件加載數據? – Sersh 2011-04-12 14:41:01

相關問題