COM Erstellen von COMServern in Visual Fox Pro

  • Slides: 20
Download presentation
COM Erstellen von COM-Servern in Visual Fox. Pro 9. 0 deutschsprachige Fox. Pro User

COM Erstellen von COM-Servern in Visual Fox. Pro 9. 0 deutschsprachige Fox. Pro User Group Rainer Becker Microsoft Visual Fox. Pro 9. 0 Roadshow

Component Object Model n n n COM (Component Object Model) ist ein Microsoft Standard,

Component Object Model n n n COM (Component Object Model) ist ein Microsoft Standard, der es anderen Applikationen, wie zum Beispiel Active Server Pages oder Microsoft Office erlaubt, auf Funktionalität der eigenen Applikation zuzugreifen Man kann jedem Client, der COM-Objekte ansprechen kann, über COM beliebige Funktionalität zur Verfügung stellen Dies gilt also bi-direktional (von/aus VFP)

Bekannte COM-Server I n n Microsoft Word und Microsoft Excel VFP kann auf diese

Bekannte COM-Server I n n Microsoft Word und Microsoft Excel VFP kann auf diese Applikationen als Client problemlos zugreifen, o. Word= createobject(„Word. Application“) n n Die Funktionalität eines COM-Servers kann man im VFP Objekt Browser sehen Intellisense unterstützt VFP bzgl. der benötigten Methoden und Eigenschaften z. B. local o. Excel as ‚Excel. application‘

Bekannte COM-Server II n n n Der COM Client (z. B. der Object Browser)

Bekannte COM-Server II n n n Der COM Client (z. B. der Object Browser) kann die verfügbare Funktionalität eines COM-Servers über die sogenannte Type Library erfahren Indem man andere COM-Server in eigenen VFP Projekten verwendet, kann man VFP-Funktionalität beliebig erweitern. z. B. Excel für alle Rechenaufgaben einsetzen. . . Das Ansteuern eines anderen COM-Servers nennt man auch OLE-Automation

COM-Objekt n COM-Server benötigt ein Objekt OLE-Public n Es muss sich nicht um ein

COM-Objekt n COM-Server benötigt ein Objekt OLE-Public n Es muss sich nicht um ein Geschäftsobjekt handeln n n Es muss sich um ein Objekt handeln n n Sehr oft sind die eigentlichen Geschäftsobjekte nicht wirklich für einen Aufruf von außen geeignet! Zumindest ein Wrapper-Objekt für Funktionen ist notwendig Basierend auf einer Klasse (Control/Container) n n Aufruf via „createobject“ aus anderen Anwendungen Methoden/Eigenschaften sind sichtbar/modifizierbar und müssen daher geschützt werden (siehe unten)

OLE Public / Erstellungsoptionen

OLE Public / Erstellungsoptionen

EXE / DLL (single/multi) n Ein In-Process COM-Server ist eine DLL welche im Speicherbereich

EXE / DLL (single/multi) n Ein In-Process COM-Server ist eine DLL welche im Speicherbereich des Clients instanziiert wird. Diese COM Server Art kann keine direkte Interaktion mit dem User Interface haben OLE Fehler wird erzeugt n Single Threaded: Jede Clientanwendung erhält eine eigene Instanz des COM Servers n Multi Threaded: Verschiedene Clientanwendung können sich die gleiche Instanz des COM Servers „teilen“ n n Details beziehen sich auf Einsatz der COM Server unter MTS/COM+ Ein Out-of-Process COM-Server ist eine EXE, welche in einem eigenen Speicherbereich läuft. n Dieser COM-Server kann ein User Interface haben!

Type Libraries n Die Type Library ist eine binäre Datei welche alle öffentlichen Klassen

Type Libraries n Die Type Library ist eine binäre Datei welche alle öffentlichen Klassen des COM Servers mit deren Methoden, Attributen und Events beschreibt. Eine Type Library kann vorliegen als: n n n Ein eigene binäre Datei (. TLB, . OLB) Integriert in eine DLL In eine EXE hineinkompiliert In ein Active. X Control integriert Wenn Sie ein Projekt mit OLEPUBLIC Klassen unter VFP kompilieren erhalten Sie 3 Dateien: n n n Die DLL oder EXE mit dem Projektnamen Eine Type Library (. TLB) Eine Registry Datei (. VBR)

COM-Server Dokumentation n n Andere Entwickler welche Ihre Komponenten verwenden, erhalten nur die Information

COM-Server Dokumentation n n Andere Entwickler welche Ihre Komponenten verwenden, erhalten nur die Information welche Sie in der Description (Beschreibung) abgelegt haben (Klasse, Attribute, Methoden) COM Server Methoden sollten daher in der Beschreibung enthalten: n Beschreibung der zu übergebenden Parameter n High-Level Beschreibung der Methode n Was macht die Methode n Beschreibung des Return Wertes

Bessere Dokumentation in PRG! n n COMATTRIB (nur in PRG Dateien): n Festlegen welchen

Bessere Dokumentation in PRG! n n COMATTRIB (nur in PRG Dateien): n Festlegen welchen Status eine Property/Methode hat (n. Flags bzw [1]) n Restricted, Hidden, Non. Browsable n Hilfe String festlegen [2] n Gross/Kleinschreibung erhalten (Capitalisation) [3] n Property. Typ angeben [4] n Anzahl Parameter [5] Diese Einstellungen wandern nur in die TLB (reine Information) und werden nicht enforced n Es erfolgt also keine tatsächliche Typprüfung o. ä.

Beispiel programmatisch DEFINE CLASS Prg. Demo AS Session OLEPUBLIC PROCEDURE Get. Date. Time RETURN

Beispiel programmatisch DEFINE CLASS Prg. Demo AS Session OLEPUBLIC PROCEDURE Get. Date. Time RETURN "Timestamp: "+TRANSFORM(DATETIME()) ENDPROC Get. Date. Time_COMATTRIB = COMATTRIB_NONBROWSABLE i. Anzahl = 0 DIMENSION i. Anzahl_COMATTRIB[4] i. Anzahl_COMATTRIB[1] = COMATTRIB_READONLY i. Anzahl_COMATTRIB[2] = „Anzahl der Einträge“ && Hilfe i. Anzahl_COMATTRIB[3] = „i. Anzahl“ && Gross/Kleinschr. i. Anzahl_COMATTRIB[4] = „Integer“ && Typ Angabe. . .

Access/Assign und Parameter n Geschützte Methoden / Eigenschaften n n Kleine Schnittstelle: Eigenschaften /

Access/Assign und Parameter n Geschützte Methoden / Eigenschaften n n Kleine Schnittstelle: Eigenschaften / Methoden ausblenden Extensive Parameterprüfung in Methoden Zugriffs-Methoden für Eigenschaften verwenden Assign- & Access-Methoden n n Vartype und gültige Werte (Werteliste, Datum usw. ) Formattierung (Großbuchstaben, Leerzeichen) Schreibgeschützte Eigenschaften Ausschließlich interner Zugriff (hidden property switch)

Sonstige Vorbereitungen n Überprüfung des Startmodus INLIST( _vfp. startmode, 2, 3, 5 ) n

Sonstige Vorbereitungen n Überprüfung des Startmodus INLIST( _vfp. startmode, 2, 3, 5 ) n Automation Server Unattended Mode ausschalten =SYS(2335, 1) n Fehlerbehandlung integrieren =COMRETURNERROR n n Sollte auch aus Access/Assign-Methoden aufgerufen werden Setzen Sie alle Ihre Einstellungen n Uralt: Strg+OK liefert alle Optionen…

Projektdefinition n Hauptprogramm hinzufügen… n n n Tabellen für Steuerdaten inkludieren Config. fpw inkludieren

Projektdefinition n Hauptprogramm hinzufügen… n n n Tabellen für Steuerdaten inkludieren Config. fpw inkludieren n n Testprogramm eignet sich dafür SCREEN = OFF (kein VFP-Desktop sichtbar) RESOURCE=OFF (keine Anlage Foxuser. dbf) ALLOWEXTERNAL=ON (zusätzliche config. fpw mögl. ) Sichtbar schalten sofern sinnvoll

Ausführung des COM-Servers n Beispiel in Excel: n n n Dim lo. Ref as

Ausführung des COM-Servers n Beispiel in Excel: n n n Dim lo. Ref as Object On Error Goto Some. Error Set lo. Ref = createobject(„exe. obj“) … other operations Set lo. Ref = Nothing Excel-Entwickler lieben VFP-Datenzugriff, da er viel einfacher für Sie ist als ODBC/ADO!

Type. Lib-Abfrage n n Der Object Browser (Objektkatalog) kann Type Libraries auslesen und anzeigen

Type. Lib-Abfrage n n Der Object Browser (Objektkatalog) kann Type Libraries auslesen und anzeigen Informationen zu einem COM-Server können per Drag & Drop in VFP übernommen werden

Registrierung COM-Server n n Wenn Sie aus einem VFP Projekt einen COM Server kompilieren,

Registrierung COM-Server n n Wenn Sie aus einem VFP Projekt einen COM Server kompilieren, dann werden alle OLE Public Klassen automatisch auf dem lokalen Rechner registriert Wenn Sie mit den gängigen Installations-tools (Installshield, Wise. . ) ein Setup erstellen, so werden die COM Komponenten automatisch auf dem Rechner registriert Sie können dies auch manuell mit Hilfe der Windows Tools Reg. Server, Un. Reg. Server und Reg. Srv 32 erledigen Wenn VFP nicht installiert ist, muss zuerst die VFP Runtime installiert werden, damit der COM-Server lauffähig ist!

Auslieferung des COM-Servers n Laufzeitverzeichnis enthält n n n n <Ihr. Server>. exe VFP

Auslieferung des COM-Servers n Laufzeitverzeichnis enthält n n n n <Ihr. Server>. exe VFP 9 R. DLL, VFP 9 RENU. DLL GDIPLUS. DLL REGSVR 32. EXE MSVCR 71. DLL in system 32 Regsvr 32. exe vfp 9 r. dll <Ihr. Server>. exe /regserver

Querverweise n 06 -17 Entwickeln und Debuggen von COM Servern

Querverweise n 06 -17 Entwickeln und Debuggen von COM Servern

Vielen Dank! Besuchen Sie unsere Webseiten: http: //www. dfpug. de, http: //portal. dfpug. de,

Vielen Dank! Besuchen Sie unsere Webseiten: http: //www. dfpug. de, http: //portal. dfpug. de, http: //forum. dfpug. de, http: //newsletter. dfpug. de, http: //devcon. dfpug. de, http: //roadshow. dfpug. de, http: //www. visualextend. de, http: //www. linuxtransfer. de, http: //www. visualfoxpro. de