5.11 Wie sieht die Objektstruktur der API-Elemente aus?
Ich verwende hier das Wort Elemente für die Typen/Objekte der API.
Die möglichen Elemente der API unterteilen sich in folgende:

Module:
Hierbei handelt sich um Gruppierungen der anderen Elemente. Diese Gruppierungen sind nur für die bessere Übersicht gedacht und haben für die Programmierung in StarBasic keinerlei Bedeutung. Außer natürlich durch den Namen im Objekt. Achten muß man darauf, dass sich die Module innerhalb der Dokumentation nicht immer als hilfreich erweisen. Durch die Möglichkeit eines Service eigene Services zu verwenden, kommt es leider auch zu einigen nicht immer sofort ersichtlichen Querverbindungen.
Ein einfaches Beispiel dazu:
Im Modul "Text" befinden sich der Services "TableRow". Dieser hat dann aber ein Interface aus dem Modul "Table".

Services:
Sind die eigentlichen Objekte von Starbasic. Sie können Interfaces, Structs, Enums, Constant Groups, Typdef, Exceptions Properties beinhalten. Und was besonders wichtig ist: Sie können ebenfalls selber Services haben.

Interfaces:
Interfaces sind die Schnittstellen und stellen den Service die Methoden zur Verfügung. Interfaces haben ausschließlich Methoden.

Properties:
Sind die Eigenschaften die Services haben können. Sie kommen auch nur bei den Services vor. Es gibt zwei besonders Typen von Properties: Enum  und Struct.
Ansonsten handelt es sich um Typen wie String, Integer (long oder short) oder  Boolean.

Methods:
Sind Methoden die ausschließlich von Interfaces bereitgestellt werden. Wenn es sich um Funktionen mit einem Rückgabewert handelt, kann es sich dabei um die Typen: String, Long, Short, Boolean, Void oder um ein Objekt (Service) handeln. Diese Typen können auch als Array übergeben werden.

Structs:
Structs sind gruppierte Properties. Sie können nur gemeinsam an eine Propertie übergeben. Dabei kann man einzelne Werte festlegen oder Standardwerte automatisch verwenden. Siehe auch:

Exception:
Ist der Typ der mögliche Fehlermeldungen enthält oder übergibt den betroffenen Service oder das Interface als Meldung.

Enum:
Enums sind Konstanten die für  einen bestimmten Kontext gebündelt worden sind. Zum Beispiel: com.sun.star.style.ParagraphAdjust. Unterhalb von ParagraphAdjust werden die Optionen, denen man einen Absatz einstellen kann, gebündelt (Linksbündig, Blocksatz, Rechtsbündig, Zentriert). Der Übergabewert ist nicht dokumentiert, aber eigentlich eine Aufzählung (eng. Enumeration) in fortlaufender Folge. Bei einigen Services kann man daher auch mit dem passenden Integerwert die Einstellung vornehmen. Da die Dokumentation fehlt, muß man den vollen Namen als Konstante verwenden. Hier also "com.sun.star.style.ParagraphAdjust.LEFT" für linksbündig. Achtung: Auf Groß- und Kleinschreibung achten. Einige dieser Enums sind mit großer Vorsicht zu verwenden, da nicht alle dokumentierten Elemente von Enums funktionieren. "com.sun.star.style.ParagraphAdjust.STRETCH" führt zum Beispiel, entgegen der Dokumentation, auch zu einem linksbündigen Absatz.

Constant Groups:
Sind Gruppierungen von Konstanten. Hier kann der Namen auch nur komplett verwendet werden. Aber in der Dokumentation stehen die Werte für diese Konstanten, die man alternativ verwenden kann. Auch hier gilt, nicht alle sind richtig dokumentiert oder funktionieren richtig.

Zum Abschluß eine nicht ganz vollständige Übersicht:
graphic