Wie kann ich den Cursor in einem Formularfeld per Makro bewegen?

Ich habe mir für eine Datenbank ein Makro geschrieben, mit dem ich in einem maskierten Feld (für die Eingabe einer IBAN) die Art der Maskierung anpassen kann. Leider geht bei jeder Anpassung der Cursor an den Start des Feldes.

Bisher habe ich erfolglos versucht, mit dem folgenden Code den Cursor zu bewegen:

oViewCursor = ThisComponent.CurrentController.getViewCursor()
oViewCursor.goRight(2, False)

Der Cursor soll einfach zur 3. Position wandern, da nach der Eingabe der Landeskennung (die ersten beiden Buchstaben) die Änderung des Feldes veranlasst wurde. Nur bewegt der Cursor sich nicht …

Hier ein reines Textdokument mit so einem maskierten Feld. Einfach statt DE die Kürzel für ein an Deutschland angrenzendes Land einfügen, also z.B. NL (kann auch klein geschrieben werden - macht das Feld groß).
MaskiertesFeld.odt (12.6 KB)

http://www.openoffice.org/api/docs/common/ref/com/sun/star/awt/XTextComponent.html#setSelection´
Ich glaube, du musst die Cursorposition mit getSelection() ermitteln wenn eine Taste gedrückt wird und auf diesen Wert zurücksetzen nachdem der Text geändert wurde.

Korrektur. So geht’s

SUB IBAN_Length_Change(oEvent AS OBJECT)
	DIM i AS INTEGER
	sel = oEvent.Source.Selection
	oFieldIBAN = oEvent.Source.Model
	stIBAN = Left(oFieldIBAN.Text, sel.Min)
	stLiteralMask = Left(oFieldIBAN.LiteralMask, 2)
... usw...
		oEvent.Source.setSelection(sel)
	END IF
END SUB

Prima, passt! Wäre ich nie drauf gekommen, das aus dem Event zu nehmen.

Fast jedes Event-Makro fängt bei mir so an:

Sub irgendwas(ev)
mri(ev)

… wenn ich nicht gleich das MRI-Macro dem Event zuweise.