Seite 1 von 1

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Verfasst: Mo, 27.07.2009 11:35
von komma4
Besorge Dir Andrew Pitonyaks Makro Dokument, da ist ein Beispiel drinne.

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Verfasst: Mo, 27.07.2009 17:55
von komma4
Du verwendest in der FUNCTION (warum F., wenn Du den Rückgabewert nicht auswertest?) die gleiche Variable i%, die nach dem letzten Durchlauf 4 ist ... als Index dann wohl der fünfte Eintrag - und den gibt es nicht.


Ausserdem solltest Du DocumentProperties (seit OOo 3.x) verwenden (DocumentInfo nur bis 2.x unterstützt)


Sorry - gerade keine Zeit für genaue /weitere Untersuchungen des Codes.

Viel Erfolg!

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Verfasst: Mo, 27.07.2009 22:21
von komma4

Code: Alles auswählen

If userProps.getPropertySetInfo().hasByName( strVarName ) Then
print "vorhanden: " & strVarName
Else
      userProps.removeProperty(strVarName)
      userProps.addProperty(strVarName, ,aValue) 
 End If
Weiterhin viel Spass!

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Verfasst: So, 24.01.2010 17:38
von viperbone
Hier noch zur Vollständigkeit ein kleines Beispielprogramm zum lesen und schreiben von Benutzerdefinierten Eigenschaften. Für Verbesserungsvorschläge bin ich offen:

Code: Alles auswählen

Sub Main

msgbox(SetDocProperty("myName", "viper"))
msgbox(GetDocProperty("myName"))
msgbox(SetDocProperty("myName", "bone"))
msgbox(GetDocProperty("myName"))
End Sub


Public Sub SetDocProperty(ByVal strVarName, ByVal aValue) as Boolean

  Dim userProps As Object
  Dim result as Boolean 
  result = false

  On Error Goto ErrHandler
  ' get UserDefined Properties
  userProps = thisComponent.DocumentProperties.getUserDefinedProperties()
 
  ' Try to Remove; on Error Property doesen't exists yet
  If userProps.getPropertySetInfo().hasPropertyByName(strVarName) = False then
  	 ' http://api.openoffice.org/docs/common/ref/com/sun/star/beans/XPropertyContainer.html
     userProps.addProperty(strVarName, ,aValue)
  Else
	 ' http://api.openoffice.org/docs/common/ref/com/sun/star/beans/XPropertySet.html
	 userProps.setPropertyValue(strVarName, aValue)
  End If
  result = true
  
ExitFunc:
	SetDocProperty = result
Exit sub
ErrHandler:
	Goto ExitFunc
End Sub

Public Sub GetDocProperty(ByVal strVarName) As String

  Dim userProps As Object

  On Error Resume Next
  ' get UserDefined Properties
  userProps = thisComponent.DocumentProperties.getUserDefinedProperties()
 
  ' Try to Remove; on Error Property doesen't exists yet
  If userProps.getPropertySetInfo().hasPropertyByName(strVarName) = True then
     ' http://api.openoffice.org/docs/common/ref/com/sun/star/beans/XPropertySet.html
     GetDocProperty = userProps.getPropertyValue(strVarName)
  Else
  	 GetDocProperty = ""
  End If
End Sub