Benutzerdefinierte Eigenschaften (OOo3.1)

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

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Beitrag von komma4 »

Besorge Dir Andrew Pitonyaks Makro Dokument, da ist ein Beispiel drinne.
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Beitrag 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!
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Beitrag 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!
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)
viperbone
Beiträge: 1
Registriert: So, 24.01.2010 17:03

Re: Benutzerdefinierte Eigenschaften (OOo3.1)

Beitrag 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
fg viperbone
Antworten