Session D-VFP

Einführung in VFP 5.0

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.

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 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 aufgenommen 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.

Nicht 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 D-METH und andere).

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 die entsprechende Tabelle am Ende dieses Artikels bzw. auf der Begleitdiskette).

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 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.

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.

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.

Besonder 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 her kommt!).

Die OLE-Server-Fähigkeit findet sich in einer ganzen Reihen von Properties und Methoden des Application Objects wieder (siehe auch Sessions E-OLE, D-FUN und D-OLE).

Die nachfolgenden 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).

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 D-OCX und D-FUN).

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.

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 D-OCX, D-CTRL.

Die SQL-Engine

Die SQL-Engine wurde in einigen Aspekten verbessert (siehe auch Session D-SQL).

Der SQL-SELECT-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.

Weitere neue Befehle im Zusammenhang mit SQL sind:

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

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 D-MEDI, D-BACK, E-WEB1, E-WEB2 und E-WEB3.

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.

Einige Eingabe-Masken wurden auf eine wesentlich entwicklerfreundliche 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

Die gravierendste Erweiterung im Projektmanager ist die Integrationsmöglichkeit eines SourceControl-Systems (z.B. MS Visual Source Safe). Der Einsatz dieses Systems sowie weitere Aspekte der Team-Programmierung werden in der Session D-TEAM behandelt.

Durch die neue Option "Refresh F5" im Projekt-Menu sollte man sich allerdings NICHT(!) zu der Annahme verleiten lassen, daß VFP-Projektdateien multiuserfähig geworden sein. 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-Entiwcklungssystem.

Eine weitere Neuerung im Projekt-Manager ist die Möglichkeit des Erstellen 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). Dieses VFP-5.0-Tool wurde noch um diverse Zusatzfunktionalitäten erweitert und wird in der Session D-BROW vorgestellt.

Der Database-Designer

Die wichtigste Neuerung im Datenbankdesigner ist die Multuser-Fähigkeit. Ein Datenbank-Container kann jetzt SHARED geöffnet und damit von mehreren Entwicklern zugleich bearbeitet werden (siehe auch Session D-TEAM). Allerdings kann ein konkretes Objekt (Tabelle, View, Connection) immer nur von einem Entwickler verändert werden. Außerdem können einige Eigenschaften weiterhin nur geändert werden, wenn der DBC exklusiv geöffnet ist (z.B. der RI-Code).

Zur Verbesserung des Überblicks im Datenbank-Designer sind einige Funktionen zum "Ordnung machen" auf der Designer-Arbeitsfläche eingebaut worden:

Außerdem wurden die einzelnen Objekte (Tabellen, Views usw.) mit spezifischen Icons versehen, die die Unterscheidung der Objekt-Arten erleichtert.

Auf die Veränderungen der anderen zum Datenbankdesigner gehörenden Tools (Tabellen-, View- und Connection-Designer) wird in separaten Punkten eingegangen.

Ein äußerst wichtige Neuerung betrifft die Arbeit mit den Validation Rules (siehe Abschnitt "Table-Designer").

Für detaillierte Informationen zum Database-Designer sei auf die Session D-DATA verwiesen.

Der Table-Designer

Neben geringfügigen Outfit-Änderungen fallen zusätzliche Feld-Properties ins Auge.

Format und Inputmask entsprechen den analogen Properties der TextBox und können für jedes Datenbankfeld individuell festgelegt werden. Diese Properties können mit DBGETPROP() programmatisch ausgelesen und dann in Eingabemasken verwendet werden.

Außerdem können sie bei Drag&Drop-Operationen von Projekt-Manager, Datenbank-Designer bzw. DataEnvironment in eine Form im Form-Designer automatisch mit übernommen werden.

Diese Funktionalität wird über die Page "Field mapping" unter "Tools \ Options" gesteuert. Dort kann man generelle Festlegungen für solche Drag&Drop-Operationen treffen:

Legt man im Table-Designer für ein Datenbankfeld explizit eine selbstdefinierte Klasse fest, so wird dadurch die allgemeinere Einstellung aus "Tools \ Options" überschrieben.

Außerdem wird bei den Drag&Drop-Operationen auch die unterschiedliche Zeichenanzahl der Datenbankfelder beachtet und in unterschiedliche Breiten der jeweiligen Controls umgesetzt.

Der optischen Umgestaltung des Tabledesigners ist leider die eigentlich wichtige Anzeige zum Opfer gefallen, welches Datenbankfeld gerade aktiv ist. Deshalb ist zu noch größerer Aufmerksamkeit zu raten bei der Vergabe von Feld-Eigenschaften, damit diese dann auch dem richtigen Feld zugeordnet sind.

Ein wesentliche Neuerung ist die Tatsache, daß in den Validations Rules jetzt auch Veränderungen an den zu prüfenden Daten vorgenommen werden können!

In der Satz-Validierung der Customer-Tabelle kann z.B. die Zeile "REPLACE Title WITH UPPER(Title)" stehen, welche dazu führt, daß im Feld "Title" unabhängig von der Eingabe oder von anderen REPLACE-Befehlen immer nur Großbuchstaben gespeichert werden. Plaziert man den Befehl "REPLACE Title WITH UPPER(Title)" allerdings in der Validation-Rule des Feldes "Title", dann muß man sich mit zusätzlichen Maßnahmen gegen die dabei auftretende Rekursion absichern.

Zu beachten ist allerdings, daß dieses Verhalten nur für Validation Rules gilt, nicht für Trigger!

Die View-Designer

Die View-Designer in VFP 5.0 bieten eine Reihe von Erweiterungen, die schon in anderen Zusammenhängen erwähnt wurden:

Desweiteren wurde der VIEW-Typ "OFFLINE-View" eingeführt, der ein zeitweiliges von der eigentlichen Datenquelle unabhängiges Arbeiten erlaubt (siehe Session D-OFF).

Wie schon VFP 3.0 unterstützt auch VFP 5.0 das ODBC-Level 3, auch für VFP 5.0 - Datenbanken existiert ein ODBC-Treiber.

Der Editor

Der Programm-Editor von Visual FoxPro 5.0 hat eine ganze Menge an Funktionalität hinzugewonnen, die sich zum Teil auch bei verwandten Fenstern (Command Window, Methoden-Editor) wiederfindet.

Die auffälligste Neuerung ist das Syntax Coloring, welches automatisch bestimmte Quelltext-Teile in verschiedenen Farben darstellt (die Einstellungen dazu kann man unter "Tools / Options" auf der Page "Syntax Coloring" vornehmen).

Alle anderen Neuerungen beziehen sich auf das Kontext-Menü, welches jetzt auch in Editorfenstern zur Verfügung steht:

Ingesamt ist der Editor durch diese Erweiterungen erheblich aufgewertet worden.

Der Form-Designer

In diesem Abschnitt sollen sowohl die Neuerungen im Formdesigner als auch die neuen Möglichkeiten der programmtechnischen Arbeit mit Forms kurz erläutert werden (siehe auch Session D-MASK).

Die wichtigen Neuerungen im Formdesigner betreffen alle die Verbesserung der Handhabung dieses Werkzeuges:

Im programmatischen Umgang mit Forms ergeben sich drei wesentliche Neuigkeiten:

Mit dem Single Document Interface SDI hat man die Möglichkeit, vom VFP-Desktop unabhängige Fenster zu definieren, die dann als selbständige Desktops agieren können. Die Leistungsfähigkeit solcher SDI-Fenster geht weit über den Effekt des "Desktop"-Property von VFP 3.0 hinaus. SDI-Fenster können andere Fenster beinhalten, können ein eigenes Menü und eigene Toolbars haben.

Daraus ergeben sich folgende neue Möglichkeiten:

Die Programmierung von SDI-Forms ist allerdings nicht ganz ohne Hürden, da man eine genau abgestimmte Einstellung der Properties "ShowWindow", "DeskTop", "MDIForm" und "WindowType" sowie von _SCREEN.Visible benötigt, um die gewünschten Effekte zu erreichen. Auch der Umgang mit Menüs in SDI-Forms ist etwas trickreich, da der Menügenerator für solche Menüs z.B. die Option "Anfügen" bzw. "Einfügen" nicht unterstützt.

ShortCut-Menüs sind eine neue Option im Menüdesigner. Damit erstellt man Popups, die über den RightClick-Event als Kontextmenüs aktivierbar sind (im WIN95 - Look & Feel).

Wichtige neue Properties im Zusammenhang mit der Arbeit mit Forms sind:

Weitere Neuerungen sind der Übersicht "Neue und erweiterte Sprachelemente von Visual FoxPro 5.0" am Ende dieses Artikels bzw. der Begleitdiskette zu entnehmen.

Für ausführliche Informationen zu diesem Thema sei auf die Session D-MASK verwiesen.

Der Debugger

Der Debugger in Visual FoxPro 5.0 ist nicht mehr wiederzuerkennen. Statt dem alten DEBUG- bzw. TRACE-Fenster existieren jetzt fünf Fenster, die man entweder als Toolbars innerhalb seiner Applikation oder in einem separaten, von der Applikation unabhängigen Fenster sichtbar machen kann (welches dann auch als eigenständige Task zu erreichen ist):

Außerdem wurden die Möglichkeiten der BreakPoint-Definition wesentlich erweitert (auch im Programmquelltext!). Weiterhin sind EventTracking (erlaubt das Verfolgen und Protokollieren der Abarbeitung von Events) und Coverage-Logging (Protokollierung der Programm-Abarbeitung zur Analyse der Performance eines Programms) hinzugekommen.

Einmal definierte Einstellungen können in sogenannten Debugging Sessions gespeichert und bei Bedarf wieder restauriert werden.

Desweiteren wird innerhalb des Debuggers ein weitreichendes Drag&Drop unterstützt (z.B. vom Trace- zum Watch-Fenster).

Erweiterungen der VFP-Programmiersprache im Zusammenhang mit dem Debugger sind _COVERAGE, ASSERT, CLOSE DEBUG, DEBUG, DEBUGOUT, SET ASSERTS, SET COVERAGE, SET DEBUGOUT, SET EVENTLIST, SET EVENTTRACKING.

Für ausführliche Informationen zu diesem Thema sei auf die Session D-DBUG verwiesen.

Neue und verbesserte Wizards

Neue Wizards in Visual FoxPro 5.0 sind:

Erweitert oder verbessert wurden folgende Wizards:

Weitere Informationen zu Wizards finden sich in den Session D-WIZ und E-WIZ.

Neue und erweiterte Sprachelemente von Visual FoxPro 5.0

Sprach-Element   Bemerkung

_COVERAGE System Variable

N1 - zeigt auf ein Programm / eine Applikation, die die Ergebnisse des Coverage-Logging (siehe Debugger) aufbereitet

_SCCTEXT System Variable

N - zeigt auf ein Programm zum Umwandeln von VCX- / SCX-Dateien in Textfiles, die dann in ein Source-Control-System einbezogen werden können
_VFP System Variable N - Referenz auf das Applications-Objekt der aktuellen FoxPro-Instanz (ähnlich _SCREEN)
AllowAddNew Property N - bestimmt, ob im Grid durch PFEIL-ABWÄRTS neue Sätze angelegt werden dürfen

AllowHeaderSizing Property

N - bestimmt, ob im Grid die Header-Höhe mit der Maus verändert werden darf

AllowRowSizing Property

N - bestimmt, ob im Grid die Zeilen-Höhe mit der Maus verändert werden darf

Anzahl gleichzeitig geöffneter Tabellen

E1 - auf 65535 erhöht (entgegen der Zahl 2551 in Hilfe und Handbuch!)
- allerdings nimmt die Performance bei über 500 offenen Tabellen rapide ab
APPEND FROM Command E - erlaubt die Vorgabe eines bestimmten Feld-Trennzeichens (zusätzlich zum Stringbegrenzer-Zeichen)

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
ASSERT Command N - dient zur Definition von Debug-BreakPoints innerhalb des Programmquelltextes (in Abhängigkeit von bestimmten Bedingungen)
AutoVerbMenu Property N - steuert das Anzeigen eines Rightclick-Menü mit allen zugelassenen Verben für ein OLE-Objekt
AutoYield Property N - bestimmt, ob Windows-Events zwischen den einzelnen Programmzeilen einer prozeduralen Abarbeitung von FoxPro-Code angenommen werden sollen oder nicht

BINTOC( ) Function

N - Umwandeln von Integer in Binär-Character
BorderStyle Property E - gestattet das Entfernen des 3D-Rahmens bei Spinnern und ComboBoxen
BoundTo Property N - erlaubt Zugriff auf den Inhalt numerischer Datenfelder in der RowSource bei List- und ComboBoxen
BUILD APP Command E - kompiliert alle Projektbestandteile vor dem Erstellen der APP
BUILD DLL Command N - erstellt aus einem Projekt ein DLL-File
BUILD EXE Command E - kompiliert alle Projektbestandteile vor dem Erstellen der EXE
Century Property N - steuert die Anzeige von Jahrhundert-Angaben in TextBoxen
CLEAR RESOURCES Command N - zwingt VFP zum Löschen von Bitmaps, Fonts, Cursors und Icons aus den internen Puffern
CLOSE Command E - neue Option zum Schließen des Debuggers

ColorSource Property

E

- neue Optionen 4 und 5 (Nutzung der im laufenden Windows eingestellten Farben, siehe Systemsteuerung)
- jetzt für alle visiuellen Objekte verfügbar (auch für Forms!)

ComboBox Control

E

- BorderStyle: gestattet das Entfernen des 3D-Rahmens
- BoundTo: erlaubt Zugriff auf den Inhalt numerischer Datenfelder in der RowSource
- Format und InputMask stehen jetzt für Style = 0 (DropDown Combo) zur Verfügung
- ItemTips: steuert die Anzeige eines ToolTip-Textes, wenn der Inhalt eines Eintrages größer ist als die aktuelle Breite des Controls

COPY TO Command

E - erlaubt die Vorgabe eines bestimmten Feld-Trennzeichens (zusätzlich zum Stringbegrenzer-Zeichen)
CREATE FROM Command E - kann jetzt mit den Klauseln DATABASE und NAME Tabellen in einer Datenbank erzeugen, die nicht aktiv und auch nicht geöffnet sein muß
CREATEBINARY( ) Function N - Stringformat-Konvertierung zur Kommunikation mit ActiveX-Controls

CREATEOFFLINE( ) Function

N - erstellt einen OFFLINE-View

CTOBIN( ) Function

N - Umwandeln von Binär-Character in Integer

CURSORGETPROP( ) Function

E - neue Optionen “CompareMemo“ und “Prepared“

CURSORSETPROP( ) Function

E - neue Optionen “CompareMemo“ und “Prepared“

DataToClip Method

N - kopiert Datensätze im Textformat in die Zwischenablage

DateFormat Property

N - legt das Datumsformat für eine einzelne Textbox fest
DateMark Property N - legt den Datumstrenner für eine einzelne Textbox fest
DBGETPROP( ) Function E - neue Optionen “CompareMemo“, “DisplayClass“, “DisplayClassLibrary, “Offline““ und “Prepared“
DBSETPROP( ) Function E - neue Optionen “CompareMemo“, “Offline““ und “Prepared“
DEBUG Command N - aktiviert den VFP-Debugger
DEBUGOUT Command N - gibt Meldungen im Output-Fenster des Debuggers aus

DefaultFilePath Property

N

- Property des Application Objects
- hat eine identische Funktion wie SET DEFAULT / CD und SYS(5) + SYS(2003)

DEFINE CLASS Command

E

- HIDDEN: schärfere Form von PROTECTED (auch in Subklassen nicht sichtbar)

- OLEPUBLIC: erstellt OLE-Server-Klassen

DIRECTORY( ) Function

N - analoge Funktion zu FILE(), aber für Verzeichnisse (hat allerdings nicht das Verhalten der FILE()-Funktion, auch den Foxpro-Suchpfad abzusuchen)
DISKSPACE( ) Function E - unterstützt jetzt eine Laufwerksangabe als Parameter
DoCmd Method N - Methode des Application Objects, mit dem OLE-Clients FoxPro-Kommandos ausführen lassen können
DODEFAULT( ) Function N - führt aus einer Methode heraus die entsprechende Methode der übergeordneten Klasse aus
DOEVENTS Command N - führt die angesammelten Events aus, die durch AutoYield = .F. aufgestaut wurden
DROP TABLE Command N - entfernt Tabellen aus einem Datenbank-Container

DROP VIEW Command

N - entfernt Views aus einem Datenbank-Container
DROPOFFLINE( ) Function N - verwirft alle Änderungen in einem Offline-View
DynamicInputMask Property N - Input Mask analog den anderen Dynamic-Properties im Grid
Eval Method N - Methode des Application Objects, mit dem OLE-Clients FoxPro-Ausdrücke auswerten lassen können
FOR EACH ... ENDFOR Command N - Schleifenkonstrukt zum Parsen von Object Collections

Format Property

E

- jetzt auch für ComboBox Style = 0 (DropDown Combo)
- neue Optionen YS und YL (Datums-Anzeige lt. Systemsteuerung)

FullName Property

N - Property des Application Objects analog SYS(2004)

Help Method

N - Methode des Application Objects, mit dem die Hilfefunktion aufgerufen werden kann
HighlightRow Property N - Property des Grids, mit dem die gesamte aktive Zeile optisch hervorgehoben wird
Hours Property N - steuert die Anzeige von Stunden-Angaben in TextBoxen
IMEMode Property N - steuert die Aktivierung des IME-Windows zur Eingabe von DoubleByte-Characters (nur in FarEast-Versionen von Windows)
IMPORT Command E - kann jetzt mit den Klauseln DATABASE und NAME Tabellen in eine Datenbank importieren, die nicht aktiv und auch nicht geöffnet sein muß
InputMask Property E - jetzt auch für ComboBox Style = 0 (DropDown Combo)

IntegralHeight Property

N - erzeugt bei TextBoxen, EditBoxen und ListBoxen eine Höhe, die genau einem Vielfachen der aktuellen Fonthöhe entspricht, so daß keine Zeilen abgeschnitten werden

ISFLOCKED( ) Function

N - prüft, ob eine Datei durch die aktuelle VFP-Instanz mit FLOCK gesperrt wurde
ISRLOCKED( ) Function N - prüft, ob eine Datensatz durch die aktuelle VFP-Instanz mit RLOCK gesperrt wurde
ItemTips Property N - steuert die Anzeige eines ToolTip
-Textes, wenn der Inhalt eines Eintrages größer ist als die aktuelle Breite des Controls

ListBox Control

E

- BoundTo: erlaubt Zugriff auf den Inhalt numerischer Datenfelder in der RowSource
- ItemTips: steuert die Anzeige eines ToolTip-Textes, wenn der Inhalt eines Eintrages größer ist als die aktuelle Breite des Controls

LOADPICTURE( ) Function N - stellt eine Objektreferenz auf ein BMP-, ICO- oder WMF-File her (wird von manchen ActiveX-Controls benötigt)
MCOL( ) Function E - über den neuen scalemode-Parameter kann man steuern, ob Pixel oder Foxel zurückgegeben werden sollen

MD | MKDIR Command

E - kann jetzt mehrere Unterverzeichnisebenen mit einem Befehl anlegen
MiddleClick Event N - erlaubt das Reagieren auf die mittlere Maustaste

MouseIcon Property

N - Dateiname des zu verwendenden Maus-Cursors bei MousePointer=99
MousePointer Property E - hat jetzt auch die Option 99 (user defined)

MouseWheel Event

N - erlaubt das Reagieren auf das Mausrad, so man eine Maus mit Rad hat <bg>
MROW( ) Function E - über den neuen scalemode-Parameter kann man steuern, ob Pixel oder Foxel zurückgegeben werden sollen
Null Values E - keine Punkte mehr um die Konstante .NULL. mehr notwendig (aber dadurch wird NULL zum reservierten Wort!)

NullDisplay Property

N - bestimmt für ein Control den Wert, der angezeigt werden soll, wenn die Datenquelle einen NULL-Wert beinhaltet
Objects Collection N - Property des Application Objects zum Zugriff auf die nachgeordneten Objekte
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

OpenViews Property

N - Property des DataEnvironment, bestimt die Art des Öffnen von Views
Quit Method N - Methode des Application Objects zum Beenden einer VFP-Instanz
REPORT Command E - WINDOW-Klausel: erlaubt das Plazieren eines Previews in einem benutzerdefinierten Fenster

RequestData Method

N - Methode des Application Objects zum Abfordern von Daten durch einen OLE-Client
RightToLeft Property N - steuert die ggf. notwendige Von-Rechts-Nach-Links-Schreibung (nur in FarEast-Versionen von Windows)
SAVEPICTURE( ) Function N - erstellt aus einer mit LOADPICTURE generierten Objektreferenz wieder ein BMP-File (wird bei einigen ActiveX-Controls benötigt)

Seconds Property

N - steuert die Anzeige von Sekunden-Angaben in TextBoxen

SELECT - SQL Command

E

- TOP-Klausel: Angabe einer Maximalmenge von Sätzen, die in das Result-Set übernommen werden sollen (absolut oder in Prozent, wirkt nur in Zusammenhang mit ORDER BY und dient zur Abfrage der inhaltlich “wichtigsten“ Datensätze)
- FORCE-Klausel: beeinflußt die Abfolge der JOIN-Verknüpfungen
- JOIN-Klausel: gestattet JOIN-Verknüpfungen
- außerdem kann als Ziel auch eine neue Tabelle in einer Datenbank entstehen

SET ASSERTS Command N - legt die Wirksamkeit von ASSERT-Kommandos fest
SET CLASSLIB Command E - die IN-Klausel gestattet den Zugriff auf VCX-Dateien in anderen APP- bzw. EXE-Files
SET COVERAGE Command N - spezifiziert die Ausgabedatei für COVERAGE-Informationen

SET DATE Command

E - neue Formate SHORT, LONG und TAIWAN
SET DEBUGOUT N - spezifiziert die Ausgabedatei für DEBUGOUT-Ausgaben
SET EVENTLIST N - bestimmt die Namen der Events, die in das EventTracking einbezogen werden sollen
SET EVENTTRACKING Command N - steuert das EventTracking
SET HOURS Command E - jetzt auch datasession-spezifisch
SET NULLDISPLAY Command N - bestimmt den Wert, der angezeigt werden soll, wenn eine Datenquelle einen NULL-Wert beinhaltet
SET SECONDS Command E - jetzt auch datasession-spezifisch
SET SYSFORMATS Command E - durch SET SYSFORMATS ON wird ein SET DATE TO SHORT ausgelöst

SET("DATE") Function

E - gestattet jetzt auch 1 als Argument (gibt die Reihenfolge von Tag, Monat und Jahr zurück)
SET("PRINTER") Function E - gestattet jetzt auch 2 als Argument (gibt den Namen des Default-Printers zurück)

SetVar Method

N - Methode des Application Objects, mit dem OLE-Clients im OLE-Server Variablen definieren und belegen lassen können
ShowWhatsThis Method N - zeigt einen zum Objekt gehörenden Hilfetext an
ShowWindow Property N - bestimmt, ob ein Fenster innerhalb des FoxPro-Desktops, außerhalb des FoxPro-Desktops oder innerhalb eines außerhalb des FoxPro-Ddesktops liegenden Fenster aktiviert werden soll
SORT Command E - entgegen anderslautenden Informationen wird es _NICHT_ unterstützt, das Ergebnis der Sortierung direkt als Tabelle einer Datenbank hinzuzufügen

Spinner Control

E - BorderStyle: gestattet das Entfernen des 3D-Rahmens
SplitBar Property N - steuert die Möglichkeit, ein Grid in zwei Teile zu teilen
SQLPREPARE( ) Function N - gestattet das Vorab-Zusenden von SQL-Anweisungen an ODBC-Datenquellen
StartMode Property N - Property des Application Objects, beinhaltet des Startmodus eines VFP-OLE-Servers
StatusBar Property N - Property des Application Objects, analog zum SET-MESSAGE-Befehl
StrictDateEntry Property N - erlaubt eine weniger strenge Formatierung bei der Eingabe von Datums- und Zeitangaben in TextBoxen
SYS(1500) - Activate a System Menu Item N - kann programmatisch Aktivitäten auslösen, die den VFP-Systemmenüs zugeordnet sind
SYS(2333) - ActiveX Dual Interface Support N - erlaubt die Steuerung des VTABLE-Binding bei ActiveX-Controls

SYS(3054) - Rushmore Optimization Level

N - gibt Auskunft über die Rushmore-Optimierbarkeit der gerade ausgeführten Abfrage

TabStyle Property

N - bestimmt die optische Anordnung der Tabs in PageFrames

Text Property

N - beinhaltet den unformatierten Text bei ComboBox, EditBox, Spinner und TextBox

TOTAL Command

E - entgegen anderslautenden Informationen wird es _NICHT_ unterstützt, das Ergebnis des TOTAL-Befehls direkt als Tabelle einer Datenbank hinzuzufügen
TTOC( ) Function E - 2 als Argument (gibt nur den Zeitwert zurück)
USE Command E - ADMIN- and ONLINE-Klausel zur Behandlung von OFFLINE-Views
Version Property N - Property des Application Objects analog zur VERSION()-Funktion
WhatsThisButton Property N - Form-Property für die Anzeige des WhatsThis-Buttons

WhatsThisHelp Property

N - Form-Property für die Art der WhatsThis-Hilfe
WhatsThisHelpID Property N - Form-Property für die zu verwendende HelpContextId beim WhatsThis-Hilfe-Aufruf

WhatsThisMode Method

N - Form-Method zur programmatischen Aktivierung der WhatsThis-Hilfe