5.13 Wie geht man mit Property-Arrays um?
Der Titel ist nicht besonders gut, aber ...
Es gibt Eigenschaften die über in einem Array des Typ com.sun.star.beans.PropertyValue festgelegt werden.
Diese können in der Regel mit getXXX und setXXX augelesen und gesetzt werden.
Als Beispiel verwende ich hier "Printer" unterhalb eines Dokumentes.

Es gibt zwei Methoden und eine Property die sich um Printer drehen.
Die Property ist Printer, die Methoden sind getPrinter und setPrinter

Der Zugriff auf die einzelnen Werte der Property geht direkt über Printer oder über ein  ausgelesenes Array.

Direkter Zugriff:

oDoc = thiscomponent
msgbox oDoc.Printer(0).name
msgbox oDoc.Printer(0).value

oder als Schleife
for i=1 to ubound(odoc.printer())
  msgbox oDoc.Printer(i).name
  msgbox oDoc.Printer(i).value
next

Auf diese Weis können die Werte auch gesetzt werden.
   msgbox oDoc.Printer(0).value=1
Der Name darf natürlich nicht geändert werden.
Bei dieser Art muß man natürlich den Index der zu ändernden Property kennen. Diese kann man entweder der Dokumentation entnehmen oder mit einer Funktion auslesen. Siehe Tools- >GetPropertyValAndInd

Der zweite Weg geht über auslesen und zurückschreiben mit den Methoden.

myProps=oDoc.getPrinter
for i=1 to ubound(myProp())
  msgbox myProp(i).name
  msgbox myProp(i).value
next
Analog dann einen neuen Wert zuweisen und zurück schreiben.
myProp(i).value=0
odoc.setPrinter(myProp())

Da es aber Propertys gibt, die sehr umfangreich sind, langt es auch nur die zu ändernden Property neu zu setzen.
Dazu muß man ein Array des Typ com.sun.star.beans.PropertyValue vorher erzeugen. Danach kann man einzelne Propertys neu setzen. Die Anderen bleiben dabei die anderen Propertys mit ihrem alten Wert erhalten.

Dim newProps(0) as New com.sun.star.beans.PropertyValue
newProps(0).Name="Name"
newProps(0).value="Neuer Drucker"
odoc.setprinter(newProps())