Variablen in Writer-Dokument einfügen

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

Moderator: Moderatoren

crimso
Beiträge: 3
Registriert: Di, 02.09.2008 23:58

Variablen in Writer-Dokument einfügen

Beitrag von crimso »

Moin!

Ich erstelle gerade einen Dialog, mit dem Variablen in OOo-Writer-Dokumenten geändert, gelöscht und eingefügt werden sollen. Das Ändern und Löschen vorhandener Variablen klappt soweit. Nur mit dem Einfügen neuer Variablen hapert es. Ich habe schon einiges versucht, u.a. Code aus Andrew Pitonyaks Makro-Beispielen, aber damit kann ich nur Benutzerfelder einfügen, keine normalen Variablen.

Etwas problematisch ist auch der Ort des Einfügens. Am liebsten wäre mir zentral die Kopfzeile der ersten Seite des Dokuments.

Kann mir jemand weiterhelfen? So langsam verzweifle ich doch etwas...
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Variablen in Writer-Dokument einfügen

Beitrag von komma4 »

Moin Crismo,


was sind für Dich "normale" Varibalen?
Welche Codestücke aus Andrews Dokument hast Du versucht?
Kannst Du uns Code Deiner Versuche zeigen?


Zum Einfügen in die Kopfzeile muss die zugewiesene Seitenvorlage bearbeitet werden... (Beispiel für Calc)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
crimso
Beiträge: 3
Registriert: Di, 02.09.2008 23:58

Re: Variablen in Writer-Dokument einfügen

Beitrag von crimso »

Mit "normalen Variablen" meine ich die, die man über den Feldbefehl-Dialog nach Aufruf des Reiters "Variablen" mit "Variable setzen" einfügen kann.

Dieses Problem hat sich nun größtenteils erledigt. Da OOo 2.4 einen Bug hat, der die Anzeige von Variablen in Kopfzeilen und Tabellen verhindert, bin ich auf Benutzerfelder umgestiegen. Das Einfügen in die Kopfzeile funktioniert auch problemlos. Was noch nicht funktioniert, ist, die eingefügten Benutzerfelder mit StarBasic unsichtbar zu machen. Ich kann IsVisible = false setzen und bekomme auch keine Fehlermeldung, aber das Feld bleibt sichtbar.

Code: Alles auswählen

CONST MSG_YESNO = 4
CONST return_YES = 6
CONST return_NO = 7
CONST MSG_INFOICON = 32

const sService = "com.sun.star.text.FieldMaster.User"
const sServiceTextField = "com.sun.star.text.TextField.User"

Sub subAddNewVariable
	Dim oDoc As Object			' current document
	Dim oMaster As Object  		' field master
	Dim oField As Object    	' text field in document text
	Dim sName As String			' name of variable to change
	Dim oPageStyles As Object	' all page styles
	Dim oPageStyle As Object	' single page style

	sName = oVariableNameEntryField.Text
	oDoc = thisComponent

	If Not oDoc.getTextFieldMasters().hasByName(sService & "." & sName) Then
		' create variable
		oMaster = oDoc.createInstance(sService)
		oMaster.Name = sName
		oMaster.Content = oVariableContentEntryfield.Text
		
		' connect variable to text field
		oField = oDoc.createInstance(sServiceTextField)
		oField.IsVisible = false
		oField.attachTextFieldMaster(oMaster)
	
		' get page style for first page
		oPageStyles = oDoc.getStyleFamilies().getByName("PageStyles")
		oPageStyle = oPageStyles.getByName("Erste Seite")
		oPageStyle.HeaderIsOn = true
		
		' insert variable into header of first page
		oCursor = oPageStyle.headerText.Text.createTextCursor()
		oCursor.gotoEnd(false)
		oPageStyle.headerText.Text.insertTextContent(oCursor, oField, false)
	
		' add to list box
		oVariablesListbox.addItem(sName, iVariableCount)
		iVariableCount = iVariableCount + 1
	Else
		MsgBox( _
			"Benutzerfeld " & sName & " bereits vorhanden." & CHR(10) & _
			"Hinzufügen nicht möglich!", _
			MSG_INFOICON, _
			"Fehler!" )
	End If
End Sub
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Variablen in Writer-Dokument einfügen

Beitrag von komma4 »

Dein Code funktioniert hier: die Eigenschaft invisible wird gesetzt (probiere mal einen Doppelklick auf das Feld).

Es wird allerdings erst unsichtbar, wenn Du:
* die Seitenvorschau aufgerufen hast,
* Felder>Aktualisieren aufgerufen wurde, oder
* das Dokument geschlossen und wieder geöffnet wurde.

Hilft Dir das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten