Beispiel - Verwendung der COM-Schnittstelle
Beispiel - Verwendung der COM-Schnittstelle von Microsoft Word Einstieg in die Benutzung der COM-Schnittstelle von Word
In diesem Abschnitt wird Anhand von kleinen Beispielen die Benutzung der COM-Schnittstelle von Microsoft Word vorgestellt. Dabei wird nur ein kleiner Ausschnitt der Möglichkeiten vorgestellt.
Eine vollständige Beschreibung der von Microsoft Word zur Verfügung gestellten Objekte, deren Eigenschaften und Methoden, befindet sich im Objektkatalog des Visual Basic-Editors (Menüpunkt "Extras / Makro / Visual Basic-Editor" und anschließend Menüpunkt "Ansicht / Objektkatalog").
Herstellen einer Verbindung zu Microsoft Word
Die Verbindung zur COM-Schnittstelle von Microsoft Word wird über den Befehl ComOpen () hergestellt. Als Parameter wird der Applikationsname und das Root-Objekt angegeben. Mit der Option _ComAppCreate wird ein neuer Word-Prozess gestartet.
tComApplication # ComOpen('Word.Application', _ComAppCreate);
Der zurückgegebene Deskriptor wird benötigt, um auf untergeordnete Objekte, Eigenschaften und Methoden des COM-Objektes "Application" zugreifen zu können.
Setzen einer Eigenschaft eines Objektes
Der neu gestartete Prozess wird nicht in der Taskleiste des Betriebssystems angezeigt. Damit die weitere Verarbeitung nachvollzogen werden kann, wird die Eigenschaft "Visible" des Objektes "Application" gesetzt:
tComApplication->cplVisible # true;
Eine Eigenschaft eines Objektes wird durch die Angabe des Objekt-Deskriptors, der Eigenschaft und des neuen Wertes gesetzt. In dem Beispiel wurde eine Konstante verwendet. Es kann aber auch der Befehl ComPropSet () verwendet werden.
Aufrufen einer Methode
Eine Methode wird mit dem Befehl ComCall () aufgerufen. Um ein neues Dokument zu erzeugen, muss die Methode "Add" des Objektes "Documents" aufgerufen werden. Das Objekt "Documents" ist dem Objekt "Application" untergeordnet. Die Methode kann auf unterschiedlichen Wegen aufgerufen werden. Ist der Objektpfad ausgehend vom Application-Objekt bekannt, kann dieser in der ComCall ()-Anweisung angegeben werden:
tComApplication->ComCall('Documents.Add');
Die Objekte und die Methode werden durch einen Punkt voneinander getrennt. Wird der Deskriptor zum COM-Objekt "Documents" noch zu einem späteren Zeitpunkt benötigt, kann zunächst das entsprechende Objekt ermittelt und anschließend die Methode aufgerufen werden:
tComDocuments # tComApplication->cphDocuments;
tComDocuments->ComCall('Add');
Abfragen von Ergebnissen einer Methode
Liefert eine aufgerufene Methode ein Ergebnis zurück, kann das Ergebnis mit der Anweisung ComCallResult () ermittelt werden.
tComApp # ComOpen('Word.Application', _ComAppCreate);
tComApp->cplVisible # true;
tResult # tComApp->ComCall('GetDefaultTheme', 2);
tComApp->ComCallResult(tDefaultTheme);
WinDialogBox(0, 'GetDefaultTheme', tDefaultTheme, _WinIcoInformation, _WinIdOk, 0);
Übertragen von formatierten Daten
Um Text in ein erzeugtes Dokument zu schreiben, muss die Methode "TypeText" des Objektes "Selection" aufgerufen werden. Vor dem Aufruf kann das Format des Textes geändert werden. Zunächst wird das Objekt "Selection" ermittelt. Aus dem Objekt "Selection" wird das Objekt "Font" bestimmt. Über die Eigenschaften des Font-Objektes kann das Format des Textes bestimmt werden.
tComSelection # tComApplication->cphSelection;
tComFont # tComSelection->cphFont;
tComFont->cpaName # 'Arial';
tComFont->cpiSize # 12;
Jetzt kann mit der Methode "TypeText" der Text übertragen werden:
tComSelection->ComCall('TypeText', 'Dear Sir or Madam,' + StrChar(13));
Speichern eines Dokumentes
Die Vorgehensweise zum Speichern eines Dokumentes entspricht der zum Übertragen von Text oder jedem anderen Aufruf einer Methode. Es wird das Objekt ermittelt, das verarbeitet werden soll und dessen Methode wird aufgerufen. Zum Speichern eines Dokumentes muss das Dokument ermittelt und die Methode "Save" oder "SaveAs" aufgerufen werden.
In diesem Beispiel soll das aktive Dokument gespeichert werden. Das Objekt kann über die Eigenschaft "ActiveDocument" des Objektes "Application" ermittelt werden. Der Aufruf zum Speichern des aktiven Dokumentes hat folgendes Aussehen.
tComApplication->ComCall('ActiveDocument.SaveAs', _Sys->spPathMyDocuments + '\Com_Example.doc');
Beenden der Verbindung
Wird die Verbindung zwischen CONZEPT 16 und Microsoft Word getrennt, wird Word nicht automatisch beendet. Es muss die Methode "Quit" des Objektes "Application" aufgerufen werden bevor die Verbindung mit ComClose () beendet wird.
tComApplication->ComCall('Quit', wdDoNotSaveChanged);
tComApplication->ComClose();
Das Erstellen von Serienbriefen mit Hilfe der COM-Schnittstelle ist prinzipiell möglich. Durch die Art der Programmierung ist allerdings der Zugriff über die ODBC-Schnittstelle wesentlich flexibler, einfacher zu realisieren und damit auch einfacher zu pflegen. Durch entsprechende Abfragewerkzeuge, die auch von einem ungeübten Benutzer verwendet werden können, kann das Abfragen der Datenbank und das Erstellen von Serienbriefen, Katalogen usw., vollständig durch den Benutzer erfolgen.