Benutzerdefinierte Eigenschaften (OOo3.1)

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Benutzerdefinierte Eigenschaften (OOo3.1)

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

von viperbone » So, 24.01.2010 17:38

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

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

von komma4 » Mo, 27.07.2009 22:21

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)

von komma4 » Mo, 27.07.2009 17:55

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)

von komma4 » Mo, 27.07.2009 11:35

Besorge Dir Andrew Pitonyaks Makro Dokument, da ist ein Beispiel drinne.

Nach oben