Session D-VFP5

Visual FoxPro für Aufsteiger

Sebastian Flucke
ASCI Consulting GmbH


Der Umstieg FPW 2.6 zu Visual FoxPro

Der Umstieg zu Visual FoxPro ist im wesentlichen gekennzeichnet durch ein weitreichendes Umlernen. Die neuen Möglichkeiten der objektorientierten Programmierung mit Visual FoxPro machen eine "sanfte Migration" sehr schwer.

Gänzlich abzuraten ist von den VFP-eigenen Transportern zur Konvertierung von FPW-2.6-Programmen nach Visual FoxPro. Das Ergebnis einer solchen Transformation ist fast nie hundertprozent identisch lauffähig, ganz abgesehen davon, wie es im Inneren einer solcherart konvertierten Applikation aussieht.

Grundlage für ein erfolgreiches Arbeiten mit Visual FoxPro ist eine intensive Beschäftigung mit der objektorientierten Programmierung (auch und gerade durch Literatur-Studium, siehe entsprechende Sessions der Sektionen OOP und SOFT).

Außerdem sollte man sich umfassend mit den verfügbaren FrameWorks und Klassenbibliotheken auseinandersetzen (siehe Sessions der Sektionen CLASS und TOOL).

Gute Einblicke in Detailbereiche von VFP gibt die mitgelieferte SOLUTION.APP unter VFP\SAMPLE\SOLUTION. Auch das MainSample "Tasmanian Traders" sollte man sich anschauen (es aber nicht als Vorbild für eigenes internes Programmdesign nehmen).

Für den Überblick über Visual FoxPro 5.0 sei auf die Session-Notes der Session D-OVER verwiesen.

Zusätzlich finden Sie auf den folgenden Seiten einen Überblick über alle Backward-Compatibility-Sprachelemente sowie über alle neuen oder erweiterten Sprachelemente gegenüber Visual FoxPro 3.0.

Sprachelemente von Visual FoxPro 5.0 zur Abwärtskompatibilität zu FPW 2.6

Die folgende Liste zeigt alle Sprachelemente von Visual FoxPro 5.0, die zur direkten oder emulierten Abwärtskompatibilität mit FoxPro für Windows benötigt werden!

@ ... BOX Command

@ ... EDIT - Edit Boxes Command

@ ... GET - Command Buttons Command

@ ... GET - Check Boxes Command

@ ... GET - Combo Boxes Command

@ ... GET - List Boxes Command

@ ... GET - Option Buttons Command

@ ... GET - Spinners Command

@ ... GET - Text Boxes Command

@ ... GET - Transparent Buttons Command

@ ... MENU Command

@ ... PROMPT Command

@ ... SAY Command

@ ... SAY - Pictures & OLE Objects Command

@ ... TO Command

_ALIGNMENT System Memory Variable

_ASSIST System Memory Variable

_BEAUTIFY System Memory Variable

_BOX System Memory Variable

_CUROBJ System Memory Variable

_FOXDOC System Memory Variable

_GENGRAPH System Memory Variable

_GENPD System Memory Variable

_GENSCRN System Memory Variable

_GENXTAB System Memory Variable

_INDENT System Memory Variable

_LMARGIN System Memory Variable

_PADVANCE System Memory Variable

_PBPAGE System Memory Variable

_PCOLNO System Memory Variable

_PCOPIES System Memory Variable

_PDRIVER System Memory Variable

_PDSETUP System Memory Variable

_PECODE System Memory Variable

_PEJECT System Memory Variable

_PEPAGE System Memory Variable

_PLENGTH System Memory Variable

_PLINENO System Memory Variable

_PLOFFSET System Memory Variable

_PPITCH System Memory Variable

_PQUALITY System Memory Variable

_PSCODE System Memory Variable

_PSPACING System Memory Variable

_PWAIT System Memory Variable

_RMARGIN System Memory Variable

_STARTUP System Memory Variable

_TABS System Memory Variable

_TRANSPORT System Memory Variable

_WRAP System Memory Variable

ACCEPT Command

ANSITOOEM( ) Function

ASSIST Command

CALL Command

CLEAR READ Command

COL( ) Function

ColorScheme Property

CREATE SCREEN Command

CREATE SCREEN - Quick Screen Command

DEFINE BOX Command

ErrorMessage Event

FIND Command

INPUT Command

INSERT Command

JOIN Command

LOAD Command

MDIForm Property

MDOWN( ) Function

MENU Command

MENU TO Command

MemoWindow Property

Message Event

MODIFY SCREEN Command

OBJNUM( ) Function

OBJVAR( ) Function

OEMTOANSI( ) Function

ON KEY Command

ON KEY = Command

ON READERROR Command

RDLEVEL( ) Function

READ Command

READ MENU Command

ReadActivate Event

ReadBackColor Property

ReadCycle Property

ReadDeactivate Event

ReadForeColor Property

READKEY( ) Function

ReadLock Property

ReadMouse Property

ReadObject Property

ReadSave Property

ReadShow Event

ReadTimeout Property

ReadValid Event

ReadWhen Event

ROW( ) Function

SET BORDER Command

SET BRSTATUS Command

SET CLEAR Command

SET COLOR OF Command

SET COLOR TO Command

SET DELIMITERS Command

SET DOHISTORY Command

SET FORMAT Command

SET INTENSITY Command

SET STATUS Command

SET STATUS BAR Command

SET WINDOW OF MEMO Command

SHOW GET Command

SHOW GETS Command

SHOW OBJECT Command

SYS(15) - Character Translation

SYS(18) - Current Control

SYS(20) - Transform German Text

SYS(2016) - SHOW GETS WINDOW Name

SYS(2017) - Display Startup Screen

UPDATE Command

UPDATED( ) Function

VARREAD( ) Function

WREAD( ) Function

Neue und erweiterte Sprachelemente von Visual FoxPro 5.0 gegenüber Version 3.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

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