Objekte, Methoden, Eigenschaften
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:
Basic
oDoc = thiscomponent
msgbox oDoc.Printer(0).name
msgbox oDoc.Printer(0).valueoder als Schleife
Basic
for i=1 to ubound(odoc.printer())
msgbox oDoc.Printer(i).name
msgbox oDoc.Printer(i).value
nextAuf 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 muss 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.
Basic
myProps=oDoc.getPrinter
for i=1 to ubound(myProp())
msgbox myProp(i).name
msgbox myProp(i).value
nextAnalog 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 muss 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.
Basic
Dim newProps(0) as New com.sun.star.beans.PropertyValue
newProps(0).Name="Name"
newProps(0).value="Neuer Drucker"
odoc.setprinter(newProps())