2011-06-09 48 views
1

我有一個簡單的TextArea的Flex星火文本區域insertText休息撤消緩衝區

<s:TextArea id="taData" keyUp="keyListener(event)" focusEnabled="false" fontFamily="Courier New" fontSize="12" left="10" right="10" top="40" bottom="10"/> 

的KeyListener的允許選項卡,這樣

private function keyListener(event:KeyboardEvent):void 
{ 
    if (event.keyCode == Keyboard.TAB) 
    { 
     event.currentTarget..insertText("\t"); 
    } 
} 

一切使用正常工作,但撤消緩衝器復位/停止在插入標籤的位置。

有沒有一種方法,以確保撤銷緩衝區保持機智甚至插入

回答

2

如果你想要做的是插入標籤到文本中,當用戶按下Tab鍵的選項卡中,有一個更好的這樣做的方式(我希望它能同時解決你的撤銷問題)。

您必須訪問TextArea的模型 - TextFlow對象 - 並修改其配置。文本流Configuration類具有名爲'manageTabKey'的屬性,默認爲'false'。如果將其設置爲'true',它將執行我認爲您要爲您執行的操作,即當用戶點擊Tab鍵時,插入製表符而不是將焦點放在下一個可調焦元素上。

var textFlow:TextFlow = taData.textFlow; 
var config:Configuration = Configuration(textFlow.configuration); 
config.manageTabKey = true; 

演員陣容來配置是必要的,因爲textFlow.configuration返回對manageTabKey沒有setter方法的IConfiguration接口。

此外,您甚至可以使用'tabStops'屬性來設置選項卡的寬度。

textFlow.tabStops = "25 50 75 100"; 

編輯: 我只注意到你設置 'focusEnabled' 爲假。這也將不再是必要的。

+0

完美,非常感謝。 – 2011-06-11 07:25:28