OLE/ActiveX
ActiveX ist ein Teil des Microsoft Component Object Model (COM), das eine Zusammenarbeit von ver-
schiedenartigen Anwendungen bzw. Komponenten auf Basis eines einheitlichen Interfaces ermöglicht.
Einige Features von ActiveX wurden unter dem Begriff OLE zusammengefasst (Automation etc.).
Wir wollen uns an dieser Stelle nicht zu sehr in den Details verstricken. Für den Access-Programmierer als
reinen Endanwender dieser Technologie sind die Interna relativ uninteressant. Viel wichtiger sind für uns
die Möglichkeiten, Access-Programme durch ActiveX-Komponenten zu erweitern.
Überblick
Ist von ActiveX-Komponenten die Rede, sollten Sie unbedingt zwischen den verschiedenen Typen unter-
scheiden:
ActiveX-Controls (oft als OLE-Steuerelemente bzw. OCXe bezeichnet) sind Standard User Interface-
Elemente, die Sie zum Beispiel beim Formularentwurf verwenden können. ActiveX-Controls werden in
Dateien vom Typ OCX gespeichert.
ActiveX-Code-Komponenten (oft als OLE-Server bezeichnet) sind Objekt-Bibliotheken. Client-An-
wendungen können die Komponenten nutzen, indem sie Instanzen (Objekte) der enthaltenen Klassen
erzeugen. Die Kommunikation erfolgt über Eigenschaften, Methoden und Ereignisse. ActiveX-Code-
Komponenten können sowohl in EXE- als auch in DLL-Dateien enthalten sein.
Im Zusammenhang mit Code-Komponenten wird zwischen »in-process« (DLL) und »out-of-process«
(EXE) unterschieden. Während die DLLs immer im Adressraum der aufrufenden Anwendung laufen (zum
Beispiel die ADOs), handelt es sich bei »out-of-process«-Komponenten um selbstständige Anwendungen
mit eigenem Adressraum (z.B. Access oder Word).
Die in einer ActiveX-Komponente enthaltenen Objekte bzw. Klassen können unterschiedliche Typen auf-
weisen:
Private Die Klasse ist nur für die interne Verwendung in der ActiveX-Komponente vorge-
sehen, als Programmierer haben Sie darauf keinen Zugriff. Im Objektkatalog sind
die Klassen nicht aufgeführt.
PublicNotCreatable Auf Objekte dieses Klassentyps können Sie nur zugreifen, wenn eine Instanz durch
die ActiveX-Komponente erstellt wird. Derartige Objekte werden meist als Eigen-
schaften eines Basis-Objekts bereitgestellt (z.B. Access.Application)
OnNewProcess Sie können neue Instanzen bilden. Beachten Sie jedoch, dass jedes neue Objekt
eine neue Instanz der ActiveX-Komponente in den Speicher lädt.
GlobalOnNewProcess Wie vorhergehender Typ. Auf Eigenschaften und Methoden können Sie jedoch
sofort zugreifen, ohne eine Instanz zu bilden.
InSameProcess Sie können mit New neue Instanzen dieser Klasse bilden, es wird jedoch nur eine
Instanz der ActiveX-Komponente verwendet.
GlobalInSameProcess Wie vorhergehender Typ. Auf Eigenschaften und Methoden können Sie jedoch
sofort zugreifen, ohne eine Instanz zu bilden.
839
OLE/ActiveX

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.