[ 1 ] [ 2 ]

Session D-OVER

Visual FoxPro - ein Überblick

Sebastian Flucke
ASCI Consulting GmbH


Einführung

Mit Visual FoxPro 5.0 stellt Microsoft die erste reine 32-Bit-Version des Datenbank-Entwicklungssystems FoxPro vor (alle speziellen Hinweise für Umsteiger von FoxPro für Windows 2.6 werden in einen doppelten Rahmen eingeschlossen).

Die neue Version wird positioniert als "Relational Database Development System" und beansprucht außerdem seinen Platz im RAD- und OOP-Tool-Markt.

Die Tatsache, daß es sich um ein Entwicklungssystem handelt, wird außerdem durch den Wegfall der rudimentären "Standard Version" bekräftigt.

Die Entwicklung von Visual FoxPro zur Version 5.0 ist durch weitere Integration in die Microsoft Visual Tools Family (Visula Studio) sowie durch ein umfassendes Fit & Finish des Produkts gekennzeichnet.

Die sogenannten "Design Goals" werden von Microsoft wie folgt beschrieben:

Völlig neu in das Produkt aufgenommene Leistungsmerkmale sind

Bis auf diese Neuerungen gibt es keine dramatischen Veränderungen gegenüber der Vorversion, wohl aber eine unübersehbare Menge Feinschliff in allen Teilen des Produkts.

Nichts entscheidend Neues gibt es bei Menüs und Reports / Labels, aber auf diesem Gebiet soll sich demnächst in der MS-Produktpalette insgesamt etwas tun, was dann auch VFP betreffen wird.

Wer also Visual FoxPro 3.0 kennt und mit OLE-Automation bzw. dem InterNet nicht viel am Hut hat, hat keine Schwierigkeiten beim Übergang zu Visual FoxPro 5.0.

Kommt man von FoxPro für Windows 2.6, hat man nicht mehr und nicht weniger Aufwand zu betreiben als es die Migration nach Visual FoxPro 3.0 bedeutet hätte (wesentliche Neuerungen: objektorientierte Programmierung sowie der Datenbank-Container).

Ist man Seiteneinsteiger in die FoxPro-Welt, so hängt es vom Herkunftssystem ab, welche Teile man sich neu erschließen muß.

Auf jeden Fall geht FoxPro mit der Version Visual FoxPro 5.0 weiter deutlich seinen Weg von einem reinen xBase-Produkt hin zu modernen Software-Entwicklungs-Architekturen.

Als Entwicklungssystem umfaßt Visual FoxPro 5.0 zwei Hauptaspekte

die im folgenden näher untersetzt werden sollen.

Beachten Sie beim Einstieg in Visual FoxPro 5.0 unbedingt den Reviewers Guide (siehe Begleitdiskette) und die von Microsoft mit dem System mitgelieferten Release Notes!

Die Visual FoxPro 5.0 - Programmiersprache

Die Visual FoxPro 5.0 - Programmiersprache umfaßt alle wesentlichen Aspekte einer modernen Programmier-sprache.

Besonders hervorzuheben ist das objektorientierte Programmiermodell, welches dem Entwickler die umfassenden Möglichkeiten der OOP zur Verfügung stellt (siehe auch Sessions der Sektion OOP).

Leider sind einige Lücken in der Durchgängigkeit der objektorientierten Programmierung in Visual FoxPro 5.0 noch immer nicht geschlossen worden. So fehlen z.B. weiterhin einige Möglichkeiten des visuellen Subclassings (DataEnvironment, Pages u.a.).

Ansonsten gibt es in allen Bereichen der Visual FoxPro 5.0 - Programmiersprache punktuelle Erweiterungen um diverse Befehle bzw. Befehlsergänzungen (siehe entsprechende Tabelle in der Session D-VFP5).

Unverständlich bleibt, warum der Abschied von der 16-Bit-Welt nicht konsequenter verbunden wurde mit einer Abkehr von einigen Relikten aus der xBase-Zeit (so z.B. mit der fehlenden Deklarationspflicht für Variablen). Da eine sinnvolle Portierung von FoxPro für Windows 2.6 nach Visual FoxPro früher oder später eine Neuprogrammierung sein muß, hat das Argument der notwendigen Abwärtskompatibilitäts kein besonders großes Gewicht.
Ansonsten findet man unter dem Topic "Backward-Compatible Language Elements" in der Hilfedatei zu Visual FoxPro alle Befehle, die man nun nicht mehr benötigt, da sie durch andere Mechanismen abgelöst wurden.

Neben diversen Kleinigkeiten schlagen sich die folgenden Erweiterungen von Visual FoxPro 5.0 in der Programmiersprache nieder:

Diese wichtigen Punkte werden im folgenden näher untersetzt.

Objektorientierte Programmierung mit Visual FoxPro 5.0

Die FoxPro-Programmiersprache ist mit der Version VFP5.0 nunmehr (fast) vollständig objektorientiert.

Die daraus resultierenden Spracherweiterungen sowie deren Einsatz können hier nicht näher erläutert werden. Zu diesem Thema sei auf die Sessions der Sektionen OOP, SOFT und PROG verwiesen.

Neue Features für den FPW-Programmierer sind die eventgesteuerte Programmierung, unproblematische Mehrfachinstanzierung von Masken sowie ein wesentlich vereinfachtes Datenhandling (kein SCATTER/GATHER mehr notwendig).

Für den Umstieg von FoxPro für Windows ist insbesondere die Session D-EINS von Belang!

Visual FoxPro 5.0 als OLE-Server

VFP 5.0 - Applikation können jetzt auch als OLE-Server fungieren und die VFP-Leistungsfähigkeit damit von allen OLE-Client-fähigen Applikationen genutzt werden.

VFP-OLE-Server werden als OLE-DLL erstellt und sind damit außerdem für alle Applikationen erreichbar, die auf DLLs zugreifen können.

Besonders herauszustellen ist die "Remote Automation"-Fähigkeit von VFP 5.0. Sie gestattet den Zugriff auf OLE-Automations-Server, die nicht auf der lokalen Workstation, sondern auf einem beliebigen Windows NT - Server im Netzwerk laufen (wie schon von Visual Basic 5.0 her bekannt)!

Das sogenannte Application Object ist genau die Erweiterung in Visual FoxPro 5.0, die mit der OLE-Server-Fähigkeit zusammenhängt (nicht zu verwechseln mit einem "goApp", welches aus dem OOP-Programmieransatz kommt!).

Die OLE-Server-Fähigkeit findet sich in einer ganzen Reihe von Properties und Methoden des Application Objects wieder (siehe auch Sessions der Sektion OLE).

Die nachfolgende Tabelle gibt einen Überblick über die VFP-5.0-Spracherweiterungen, die mit der OLE-Server-Fähigkeit zusammenhängen.

Application Object N -   Objekt für den Zugriff auf VFP-OLE-Server-Applikationen von externen OLE-Clients aus
Application Property N -   Referenz auf das Application Object aus dem Innern einer VFP-OLE-Server-Applikation heraus
AutoVerbMenu Property N -   steuert das Anzeigen eines Rightclick-Menü mit allen zugelassenen Verben für ein OLE-Objekt
DEFINE CLASS Command E -   OLEPUBLIC: erstellt OLE-Server-Klassen
DoCmd Method N -   Methode des Application Objects, mit dem OLE-Clients FoxPro-Kommandos ausführen lassen können
Eval Method N -   Methode des Application Objects, mit dem OLE-Clients FoxPro-Ausdrücke auswerten lassen können
OLERequestPendingTimeout Property N -   Property des Application Objects zum Bestimmen der TimeOut-Zeit bei überhängenden Anfragen an einen VFP-OLE-Automation-Server
OLEServerBusyRaiseError Property N -   Property des Application Objects, bestimmt, ob eine Fehlermeldung angezeigt werden soll, wenn OLERequestPendingTimeout abgelaufen ist
OLEServerBusyTimeout Property N -   Property des Application Objects zum Bestimmen der TimeOut-Zeit bei einer Busy-Meldung von einem OLE-Server
RequestData Method N -   Methode des Application Objects zum Abfordern von Daten durch einen OLE-Client
SetVar Method N -   Methode des Application Objects, mit dem OLE-Clients im OLE-Server Variablen definieren und belegen lassen können
StartMode Property N -   Property des Application Objects, beinhaltet des Startmodus eines VFP-OLE-Servers

1 Diese Spalte kennzeichnet, ob ein Sprach-Element neu ist (N) oder erweitert wurde (E).

Die OLE-Server-Fähigkeit von Visual FoxPro 5.0 ist eine Erweiterung, die ihren Ursprung in den DDE-Fähigkeiten von FoxPro für Windows 2.6 hat.

ActiveX-Controls in Visual FoxPro 5.0

Auch die Unterstützung von ActiveX-Controls wurde in Visual FoxPro 5.0 wesentlich verbessert (siehe auch die Sessions der Sektion OLE).

So werden jetzt sowohl ISimpleFrame- als auch DataBound-ActiveX-Controls unterstützt.

Eine weitere wichtige Neuerung ist die Möglichkeit des Subclassing von ActiveX-Controls, die auch für diese Controls die Vererbungsmöglichkeiten von Visual FoxPro eröffnen.

Zu beachten ist allerdings die Tatsache, daß ActiveX-Controls nicht speziell für Visual FoxPro geschaffen wurden. Das kann zu Verhaltensunterschieden gegenüber normalen VFP-Controls kommen. Desweiteren kann es möglich sein, daß in den Dokumentationen von ActiveX-Controls angegebene Beispiele beim Einsatz mit Visual FoxPro 5.0 einer Modifizierung bedürfen, um angewendet werden zu können.

Ein spezielles Problem stellt das sogenannte VTable-Binding dar. Diese Technologie gestattet es (ein entsprechend programmiertes OCX vorausgesetzt), einmalig alle Properties des OCX für VFP bekanntzumachen, damit nicht bei jedem Zugriff erst gefragt werden muß "Liebes OCX, hast Du denn ein Property XYZ". Diese VTABLE-Binding-Möglichkeit existiert z.B. in Visual Basic nicht, ergo ist es in VB nicht relevant, ob ein OCX als VTableBinding-Enabled gekennzeichnet ist oder nicht. Leider sind die meisten VB-OCXe als VTableBinding-Enabled gekennzeichnet, obwohl sie diesem Anspruch nicht genügen. Verläßt sich nun VFP auf das gesetzte VTable-Flag und will diesen Modus nutzen, entsteht meisten ein GPF. Deshalb hat VFP mittlerweile die Funktion SYS(2333), mit der VTableBinding abgestellt werden kann.

An dieser Stelle sei auf die VFP-KnowledgeBase verwiesen, die unter dem Stichwort "ActiveX" aktuelle Informationen bereithält.

Für weitere Informationen zu diesem Thema siehe die Sessions der Sektion OLE.

Die Einbindung von ActiveX-Controls sowie das InPlace-ActiveX sind eine logische Fortführung der Möglichkeiten, die in FoxPro für Window 2.6 in den Datenbankfeldern vom Typ "General" zur Verfügung standen.

Die Datenbank-Engine

Die Datenbank-Engine umfaßt eine komplette Datenbank mit Default-Werten, Rules und Triggern, referentieller Integrität und Transaktionen.

Folgende Datenquellen können in einer VFP-Datenbank verwendet werden:

Außerhalb der VFP-Datenbank kann noch mit temporären DBF-Tabellen (sogenanntem Cursor = current set of records) und mit SQL-PassThrough-Befehlen direkt auf SQL-Datenbanken gearbeitet werden.

Die VFP-Datenbank bietet im einzelnen folgende Möglichkeiten

Viele der Neuerungen in Visual FoxPro 5.0 entlasten von ständig wiederkehrenden Validierungen, da die Validierung direkt in die Datenbank verlagert werden kann (d.h. man braucht nicht in jeder Maske die Validierung für ein bestimmtes Feld erneut zu programmieren, sonder greift einfach auf die einmal abgelegte Validierungsregel in der Datenbank zurück.

Die SQL-Engine

In der SQL-Engine stehen folgende Befehle zur Verfügung (siehe auch Session D-RUSH und D-DATA):

Der SELECT-SQL-Befehl wurde um folgende Optionen erweitert:

Außerdem wurde die Unterstützung von abhängigen Unterabfragen in den Befehlen SELECT-SQL, DELETE-SQL und UPDATE-SQL wesentlich erweitert bzw. überhaupt erst ermöglicht.

Zusätzliche Erweiterungen sind unter dem Punkt "View-Designer" beschrieben.

Gegenüber FoxPro für Windows 2.6 wurde der SQL-Umfang erheblich erweitert und komplettiert:

Damit steht ein fast kompletter Satz an SQL-Befehlen zur Verfügung, der bei Bedarf gut mit herkömmlichen xBase-Befehlen gemischt werden kann (siehe auch Session D-SQL der VFP-DevCon 1996).

Der Internet-Zugriff

Für die Zusammenarbeit von Visual FoxPro 5.0 mit dem Internet ist die OLE-Server-Fähigkeit von VFP 5.0 die entscheidende Voraussetzung. Sie gestattet über die FOXISAPI.DLL ein direktes Publizieren von VFP-5.0-Forms im Internet einschließlich der direkten Übernahme von eingegebenen Daten in VFP-Tabellen, wobei als FrontEnd ein beliebiger Web-Browser fungieren kann.

Für weitere Informationen zu diesem Thema siehe die Sessions der Gruppe WEB.

Das Visual FoxPro 5.0 - Entwicklungssystem

Das Visual FoxPro 5.0 - Entwicklungssystem ist einem umfassenden Fit&Finish unterzogen worden, der sich in allen Bereichen wiederspiegelt:

Diese Komplexe werden weiter unten näher betrachtet.

Außerdem gibt es einige komplex-übergreifende Erweiterungen in der Handhabung des Systems gegenüber Visual FoxPro 3.0.

Einige Eingabe-Masken wurden auf eine wesentlich entwicklerfreundlichere Handhabung umgebaut (z.B. "class \ Edit Property / Method" oder "DataEnvironment \ Add...").

An vielen Stellen wurden kontextsensitive RightClick-Menüs hinzugefügt (z.B. im Command-Window und in Fenstern des Programm-Editors).

Die Drag&Drop-Funktionalität wurde an einigen Stellen erweitert, so daß sich im Zweifelsfalle ein Probieren von RightClick bzw. Drag&Drop durchaus lohnt - man kommt zum Teil zu verblüffenden Abkürzungen.

Auch unter "Tools \ Options" finden sich diverse Neuerungen wieder:

Einige dieser Neuerungen werden weiter unten noch detaillierter besprochen.

Der Projekt-Manager

Der Projektmanager von Visual ist die Schaltzentrale bei der Programmierung. In einem Projekt wird alles zusammengefaßt, was zu einer gemeinsamen EXE- oder APP-Datei kompiliert werden soll.

Wenn in diesem Zusammenhang von Kompilieren die Rede ist, ist damit eine P-Code-Erstellung gemeint. Visual FoxPro ist kein Native-Compiler (eine mit VFP erstellte EXE benötigt immer die VFP500.DLL als Runtime-Modul). Durch ausgeklügelte VFP-interne Mechanismen ist diese Tatsache kein Problem, sondern gereicht dem System eher zum Vorteil, da über Makrosubstitution extrem flexible Programmkonstrukte erstellt werden können!

Die gravierendste Erweiterung im Projektmanager gegenüber Visual FoxPro 3.0 ist die Integration eines SourceControl-Systems (z.B. MS Visual Source Safe). Der Einsatz dieses Systems sowie weitere Aspekte der Team-Programmierung werden in der Session E-TEAM behandelt.

Durch die neue Option "Refresh F5" im Projekt-Menü sollte man sich allerdings NICHT(!) zu der Annahme verleiten lassen, daß VFP-Projektdateien multiuserfähig sind. Diese Refresh-Funktion bezieht sich lediglich auf das Refresh des Inhalts von VCX-Dateien und Datenbank-Containern, die durch andere Entwickler (z.B. im Netzwerk) verändert wurden.

Eine kleine kosmetische Veränderung betrifft die Anzeige von objektspezifischen Icons in allen Bereichen des Projektmanagers.

An dieser Stelle sei auch noch einmal auf die umfassenden Drag&Drop-Möglichkeiten des Projektmanagers hingewiesen, die allerdings schon seit VFP 3.0 bestehen. Diese Fähigkeiten qualifizieren den Projekt-Manager zu einer wirklichen "Schalt-Zentrale" bei der Arbeit mit dem VFP-Entwicklungssystem.

Eine weitere Neuerung im Projekt-Manager ist die Möglichkeit des Erstellens von OLE-DLLs (zusätzlich zu Project, APP und EXE, siehe Abschnitt "VFP 5.0 als OLE-Server.). Für diesen Zweck wird dann auch die optional sichtbare Einstellung "Regenerate OLE Server Ids" benötigt.

Außerdem kann ein EXE-File oder eine OLE-DLL mit Versions-Informationen versorgt werden, die dann z.B. im WIN95-Explorer über Kontextmenü \ Eigenschaften abgefragt werden können.

Einige sehr sinnvolle Zusatzfunktionalitäten zum Projektmanager für die Arbeit mit Klassenbibliotheken bietet der ClassBrowser (z.B. einen grafischen Überblick über die Vererbungsketten in VCX-Dateien sowie die Möglichkeit, solche Ketten umzudefinieren).

Neben den hier erwähnten Erweiterungen hat sich am Projekt-Manager gegenüber FPW 2.6 nichts grundlegendes geändert!

[ 1 ] [ 2 ]