vooparker, твой способ отлично работает, спасибо.
Но ты не мог бы объяснить, почему, если я создаю TextInput программно, то этот способ не работает?
Вот код.

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="createTextField()">
<mx:Script>
<![CDATA[
import mx.controls.TextInput;
private var prevValue : String = 'prev console message';
public function upKeyHandler ( e:KeyboardEvent ) : void
{
if( e.keyCode == Keyboard.UP )
{
e.target.text = prevValue;
e.target.setSelection(e.target.text.length, e.target.text.length);
}
}
public function createTextField():void
{
var myTxt:TextInput = new TextInput;
myTxt.addEventListener(KeyboardEvent.KEY_DOWN, upKeyHandler);
application.addChild(myTxt);
}
]]>
</mx:Script>
</mx:Application>
В этом случае курсор сместится только если слушать не KEY_DOWN, а KEY_UP, то есть, если заменить ивент на myTxt.addEventListener(KeyboardEvent.KEY_UP, upKeyHandler); Но, в этом случае, курсор прыгает в начало, пока клавиша нажата.