von crimso » Fr, 12.09.2008 18:46
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
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 [i]IsVisible = false[/i] setzen und bekomme auch keine Fehlermeldung, aber das Feld bleibt sichtbar.
[code]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
[/code]