Variablen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Lenu
*******
Beiträge: 1085
Registriert: Sa, 30.10.2004 09:24

Variablen

Beitrag 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
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Lenu
*******
Beiträge: 1085
Registriert: Sa, 30.10.2004 09:24

Beitrag 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
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten