200 likes | 408 Views
OLE/ OLE-Automation mit VFP Einsatz von ActiveX Controls. Allgemeines zu OLE/ActiveX. OLE = „Object Linking and Embedding“ Nutzung in VFP über verschiedene Wege Objektfelder in Tabellen Olebound-Control-Steuerelemente Olecontrol Active-X Steuerelemente OLE-Automatisierung (programmatisch).
E N D
Allgemeines zu OLE/ActiveX • OLE = „Object Linking and Embedding“ • Nutzung in VFP über verschiedene Wege • Objektfelder in Tabellen • Olebound-Control-Steuerelemente • Olecontrol Active-X Steuerelemente • OLE-Automatisierung (programmatisch)
Verknüpfen bzw. Einbetten von Objektfeldern • Objektfelder aus Tabellen können über das Steuerelement OLEBOUNDCONTROL (gebundenes ActiveX-Steuerelement) auf einer Form plaziert werden • WICHTIG: Objekte (z.B. WAVE-Datei) können - eingebettet (Kopie der Datei im Objektfeld) - verknüpft werden (Link zur Originaldatei)
Unterschiede verknüpft / eingebettete Objektdaten • Verknüpfte Objektdateien • Änderungen an der Originaldatei sind auch in der Form zu sehen. • Doppelclick auf das Steuerelement erlaubt keine direkte Bearbeitung des Objekts auf der Form. • eingebettete Objektdateien • Objekt komplett im Objektfeld der Tabelle. • Doppelclick erlaubt direkte Bearbeitung, Menü wird automatisch umgestellt.
Hinzufügen von OLE-Objekten zu Tabellen • Tabelle erstellen mit einem Feld oFeld, Typ „OBJEKT“ • Einfügen von Daten über- Menüpunkt „Bearbeiten“-“Objekt Einfügen“- Befehle APPEND GENERAL bzw. MODIFY GENERALBsp.:APPEND GENERAL oFeld from brief1.docAPPEND GENERAL oFeld from brief1.doc LINK
Hinzufügen von OLE-Objekten zu Formularen • Im Formular-Designer über - „gebundenes Ole-Steuerelement“ (OLEBOUNDCONTROL) • in einer Methode thisform.addobject(„octrl“,“oleboundcontrol“)thisform.octrl.controlsource = oFeldThisform.octrl.visible = .t.
Bearbeiten von Objekten durch OLE-Automatisierung • Automatisierung von Microsoft Word ab Version 8.0 sinnvoll möglich.Vorsicht bei alten Word Versionen: • Versionen vor Word 97 haben kein durchgängiges Objektmodell • Bei diesen Versionen sollten Sie lieber DDE statt OLE Automation verwenden ! • Länderversionen führen teilweise zu übersetzten Befehlsaufrufen insbesondere bei DDE-Funktionen z.B. „Speichern“ statt „Save“ Ausweg: sys(3004), SYS(3005,1033), sys(3006)
WORD Automatisieren oDoc = createobject(„word.application“) sys(3005,1033) && englisch!!!!! oDoc.documents.open(„brief1.doc“) oDoc.activedocument.saveas(„neuerbrief.doc“) oDoc.visible = „true“ oDoc.activate() Achtung: - createobject erzeugt jedesmal eine neue Instanz von Word Getobject gibt ein neues Objekt zurück, wenn Word bereits gestartet war - sonst erzeugt der Aufruf einen Fehler- benannte Parameter können den Methoden des Objekts nur übergeben werden, wenn Sie die Headerdateien einbinden. In der Regel Übergabe von VFP als Wert.
Informationen zur WORD-OLE • Datei POSITION.HLP s. Unterlagen • Datei POSIT32.TXT s.Unterlagen • Datei WINWORD8.H s. Unterlagen • MSDN • Hilfedatei VBAWRD8.HLP • Office-Professional Dokumentation (CD Durchsuchen!! Infos werden normalerweise nicht mit installiert.)
EXCEL Automatisieren oDoc = createobject(„excel.application“) sys(3005,1033) && englisch !! oDoc.workbooks.open(getfile("XLS")) oDoc.activeworkbook.saveas("neu.XLS") oDoc.visible = "true" oDoc.activate() Achtung: -createobject erzeugt jedesmal eine neue Instanz von EXCEL getobject gibt ein neues Objekt zurück, wenn EXCEL bereits gestartet war - sonst erzeugt der Aufruf einen Fehler. - benannte Parameter können den Methoden des Objekts nur übergeben werden, wenn Sie die Headerdateien einbinden. In der Regel Übergabe von VFP als Wert.
Informationen zur EXECL-OLE • MSDN • Hilfe-Datei VBAXL8.hlp • Office-Professional Dokumentation (CD Durchsuchen!! Infos werden normalerweise nicht mit installiert
Objektmodelle der OLE-Server • Zentrales Problem bei der OLE-Automatisierung ist die Beschaffung des Objektmodells d.h. Die Dokumentation über die Eigenschaften und Methoden des verwendeten OLE-Objekts. • Ansonsten: MSDN, Knowledgebase, Hersteller...
ActiveX • ActiveX Controls können Sie direkt über die Form/Class Designer Steuerelemente Toolbar hinzufügen. (angezeigt werden nur die ActiveX-Komponenten die unter EXTRAS-OPTIONEN aktiviert wurden). • ActiveX werden als OleControl eingefügt. • Häufig liegt die Dokumentation der ActiveX-Komponenten auf der rechten Maustaste im Form-Designer. Hiermit kann man auch die wichtigsten Eigenschaften gezielt einstellen.
ActiveX • _VFP.AutoYield = .F. • ActiveX Waitstate, OnKeyLabel/Mouse Queue, SET ESCAPE OFF, Queries ohne Pause, kein Switch-Back zu VFP • Verschiedene Eigenschaften von ActiveX Controls sind nur über „Object“ erreichbar.Bsp.: oleKalender.Object.value • Sie können ActiveX Elemente vererben, indem Sie diese in VFP Klassen packen.
ActiveX • SYS(2333) • VTABLE-Binding bzw. DualInterface-Support • SYS(3004 / 3005) • Return / Set Locale ID • 1029 Czech, 1031 Deutsch, 1033 Englisch, 1034 Spanisch, 1036 Franz., 1040 Ital., 1045 Polnisch, 1046 Brasilianisch, 2070 Portugiesisch • (Def) OLECID setzt nur Interface
ActiveX • ActiveX Controls können mit dem VFP Debugger problemlos debugged werden. • Sie können in VFP eigentlich fast alle verfügbaren ActiveX Controls einsetzen • Der ActiveX-Markt boomt • Erheblicher Zeitbedarf für Sichtung und Test • Sie müssen sich bei jedem Control in dessen Objektmodell einarbeiten und sind daher auf eine gute Hilfe/Dokumentation angewiesen.
Zusammenfassung • OLE in VFP • Word und Excel OLE Automation • ActiveX Controls einsetzen
Anregungen und Fragen TMN-Systemberatung GmbH Allee 62 74072 Heilbronn http://www.tmn-systemberatung.de info@tmn-systemberatung.de