Seite 1 von 1

Variablen

Verfasst: Mi, 05.01.2005 17:39
von Lenu
Hallo,
kann man die Werte von Variablen, welche man als Feldbefehle im Dokument erstellt hat, per Makro ändern?
Im Handbuch habe ich was von textfields gefunden, aber die beziehen sich auf OO-Variablen wie 'aktuelle Seitennummer'
Danke und Gruss,
Lenu

Verfasst: Do, 06.01.2005 08:46
von Toxitom
Hey Lenu,

nicht ganz ohne, aber hier ein kurzer Code, wie du ein existierendes Benutzerfeld mit Namen "TestFeld" und dem Inhalt "Hallo" als Text ansprechen und somit auch ändern kannst. Groß- und Kleinschreibung beim Namen beachten!

Code: Alles auswählen

Sub TextFeldansprechen
    DIM oMasters as Object  
    DIM oFeld as object          ' das Textfeld
	oMasters = ThisComponent.getTextFieldMasters()
	oFeld = oMasters.getByName("com.sun.star.text.FieldMaster.User.TestFeld")
	msgbox oFeld.name
	msgbox oFeld.content
End Sub
bis denn
Thomas

Verfasst: Do, 06.01.2005 09:51
von Lenu
Hallo Thomas,
das klappt ganz wunderbar, mit

Code: Alles auswählen

oFeld.content = "irgendwas"
kann ich den Inhalt ändern.
Weisst Du jetzt auch noch, wie man die Felder aktualisieren kann? Ich habe versucht den F9-Aufruf als Makro aufzuzeichnen, geht aber nicht.
Vielen Dank,
Lenu

Verfasst: Do, 06.01.2005 14:21
von Toxitom
Hey Lenu,
Weisst Du jetzt auch noch, wie man die Felder aktualisieren kann?
Klar. Aber ich kann ja nicht immer gleich alles verraten :wink:

Also füge einfach die folgende Zeile in den Code ein:

Code: Alles auswählen

thisComponent.textfields.refresh()
Im übrigen funktioniert natürlich auch die Makroaufzeichnung. Die erzeugt Dispatchercode, der wie folgt aussehen sollte:

Code: Alles auswählen

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:UpdateFields", "", 0, Array())
Je nach Version, mit der du arbeitest, ist sich OOo aber nicht ganz sicher und kommentiert die entscheidende Zeile (die letzte) in der Regel mit "REM" aus. Es funktioniert aber trotzdem - also einfach das REM entfernen, fertig.

Gruss
Thomas