<< Click to Display Table of Contents >> Sammlungen verwenden |
Die vierte Gruppe von Elementen des Application-Objekts sind Zeiger auf Sammlungen ("Collections").
Sammlungen enthalten, wie der Name schon sagt, eine Ansammlung von gleichartigen Objekten. Es gibt zum Beispiel eine Sammlung Application.Documents, die alle geöffneten Dokumente enthält und eine Sammlung Application.RecentFiles mit allen Dateien, die im Datei-Menü aufgelistet werden.
Es existieren zwei standardisierte Arten, um auf Sammlungen zuzugreifen, und TextMaker unterstützt beide. Die simplere Art ist die Eigenschaft Item, die in jeder Sammlung vorhanden ist:
' Namen des ersten geöffneten Dokuments ausgeben:
MsgBox tm.Application.Documents.Item(1).Name
' Schließt das (geöffnete) Dokument "Test.tmdx":
tm.Application.Documents.Item("Test.tmdx").Close
Wollen Sie beispielsweise alle geöffneten Dokumente auflisten, lassen Sie sich zuerst mit der standardisierten Eigenschaft Count die Zahl der offenen Dokumente geben und greifen dann sukzessive auf die einzelnen Elemente, also Dokumente, zu:
' Gibt die Namen aller geöffneten Dokumente aus:
For i = 1 To tm.Application.Documents.Count
MsgBox tm.Application.Documents.Item(i).Name
Next i
Jede Sammlung besitzt also per Definition die Eigenschaft Count, die die Zahl der Einträge in der Sammlung ermittelt, und die Eigenschaft Item, mit der Sie gezielt an einen Eintrag in der Sammlung herankommen.
Item akzeptiert als Argument stets die Nummer des gewünschten Eintrags. Soweit es sinnvoll ist, akzeptiert Item als Argument auch andere Argumente, zum Beispiel Dateinamen. Sie haben dies bereits weiter oben gesehen, als wir Item einmal eine Zahl übergeben haben und einmal einen Dateinamen.
Zu den meisten Sammlungen gibt es einen passenden Objekttyp für deren einzelne Elemente. Bei der Sammlung Windows ist beispielsweise ein einzelner Eintrag, der von Item zurückgeliefert wird, vom Typ Window – man beachte den Singular! Ein Element der Documents-Sammlung heißt Document, ein Element der RecentFiles-Sammlung eben RecentFile.
Eleganter Zugriff auf Sammlungen: For Each ... Next
Eine elegantere Methode, hintereinander auf alle Einträge einer Sammlung zuzugreifen, sei hier ebenfalls beschrieben: BasicMaker unterstützt auch die For Each-Anweisung:
' Namen aller geöffneten Dokumente ausgeben
Dim x As Object
For Each x In tm.Application.Documents
MsgBox x.Name
Next x
Das ist gleichbedeutend mit der oben vorgestellten Schreibweise:
For i = 1 To tm.Application.Documents.Count
MsgBox tm.Application.Documents.Item(i).Name
Next i
Eigene Eigenschaften und Methoden von Sammlungen
Sammlungen besitzen neben Item und Count gegebenenfalls eigene Eigenschaften und Methoden, mit denen die jeweilige Sammlung verwaltet werden kann. Möchten Sie beispielsweise in TextMaker ein leeres Dokument anlegen, so bedeutet dieser Vorgang für BasicMaker, dass Sie der Documents-Sammlung einen neuen Eintrag hinzufügen:
tm.Application.Documents.Add ' leeres Dokument anlegen