Richtlinien zur Verwendung der Visual FoxPro Foundation Classes
Die Visual FoxPro-Bibliotheken visueller Klassen (VCX) im Ordner \Ffc\ enthalten eine Vielzahl von Foundation Classes, um Ihre Visual FoxPro-Anwendungen fast oder ganz ohne Programmierung zu erweitern. Sie können die Foundation Classes frei mit Ihren Anwendungen vertreiben. Diese Foundation Classes sind in der Komponentensammlung enthalten. Die Komponentensammlung bietet eine schnelle und einfache Möglichkeit, mehr über die Eigenschaften, Ereignisse und Methoden aller Foundation Classes zu lernen.
Um ihre Struktur und ihren Code zu untersuchen, können Sie Foundation Classes auch im Klassen-Designer oder im Klassenkatalog öffnen. Auf diese Weise können Sie feststellen, wie die Foundation Classes arbeiten, und so exzellente Einblicke in die Programmierung mit Visual FoxPro erlangen.
Die folgenden Richtlinien bieten Informationen darüber, wie Sie die Visual FoxPro Foundation Classes Ihren Anwendungen hinzufügen können.
Klassentypen
Bevor Sie Ihrer Anwendung eine Foundation Class hinzufügen können, müssen Sie die Basisklasse einer Foundation Class kennen. Bestimmte Foundation Classes können nur als visuelle Objekte in Formularen verwendet werden, wohingegen andere nicht-visuell sind und programmgesteuert aufgerufen werden können, ohne zuvor auf einem Formular positioniert werden zu müssen. Die Dokumentation zu den Visual FoxPro Foundation Classes gibt zu jeder Foundation Class die Basisklasse an, so dass Sie ermitteln können, ob die Foundation Class zu einem Formular hinzugefügt oder programmgesteuert in einer Anwendung ausgeführt werden kann. Beachten Sie, dass Sie in der Komponentensammlung mit der rechten Maustaste auf eine Foundation Class klicken können, um ein Kontextmenü aufzurufen. Wählen Sie im Kontextmenü den Befehl Eigenschaften, und klicken Sie dann auf die Registerkarte Klasse, um die Basisklasse anzuzeigen.
Die folgende Tabelle listet die Visual FoxPro-Basisklassen auf und gibt an, wie diese Ihren Anwendungen hinzugefügt werden können.
Kategorie A – Basisklassen, die auf ein Formular gezogen werden können | Kategorie B – Basisklassen, die sowohl auf ein Formular gezogen werden können als auch programmgesteuert in einer Anwendung ausgeführt werden können | Kategorie C – Basisklassen, die nur programmgesteuert in einer Anwendung ausgeführt werden können |
---|---|---|
Checkbox | Custom | Form |
Combobox | Container | Formset |
Commandbutton | Timer | Toolbar |
Commandgroup | ProjectHook | |
Editbox | ActiveDoc | |
Grid | ||
Hyperlink | ||
Image | ||
Label | ||
Line | ||
Listbox | ||
OLE Control | ||
Optionbutton | ||
Optiongroup | ||
Shape | ||
Spinner | ||
Textbox |
Hinzufügen von Foundation Classes zu Formularen
Am häufigsten werden Sie Foundation Classes zu Formularen hinzufügen. Sie können Foundation Classes aus der Komponentensammlung, dem Klassenkatalog, dem Projekt-Manager und der Symbolleiste Formular-Steuerelemente auf Formulare ziehen.
Anmerkung Sie können eine Foundation Class auswählen, die Sie bereits zu einem Formular hinzugefügt haben, und dann im Menü Extras den Befehl Klassenkatalog wählen, um weitere Informationen zu der Foundation Class anzuzeigen.
Komponentensammlung Die Komponentensammlung bietet die einfachste Möglichkeit zum Hinzufügen von Foundation Classes zu einem Formular. Für Foundation Classes mit Basisklassen der Kategorie A oder B können Sie die Foundation Class aus der Komponentensammlung ziehen und dann auf einem Formular ablegen. Sie können auch mit der rechten Maustaste in der Komponentensammlung auf eine Foundation Class klicken, um das Kontextmenü anzuzeigen, und dann den Befehl Zu Formular hinzufügen wählen, um die Foundation Class zum Formular hinzuzufügen.
Zu manchen Foundation Classes gibt es auch Generatoren, die automatisch aufgerufen werden, um weitere von der Foundation Class benötigte Informationen von Ihnen abzufragen.
Klassenkatalog Sie können Foundation Classes mit Basisklassen der Kategorie A oder B direkt aus dem Klassenkatalog auf ein Formular ziehen, indem Sie das Drag-Symbol in der oberen linken Ecke des Klassenkatalogs verwenden. Wählen Sie im Klassenkatalog die Foundation Class aus, klicken Sie auf das Symbol der Foundation Class in der oberen linken Ecke des Klassenkatalogs, und ziehen Sie dann das Symbol auf das Formular. Lassen Sie die Maustaste über dem Formular dort los, wo Sie die Foundation Class auf dem Formular positionieren möchten.
Wenn Sie eine Foundation Class vom Klassenkatalog auf ein Formular ziehen, wird der zugehörige Generator nicht automatisch gestartet. Sie können den Generator jedoch starten, nachdem die Foundation Class auf dem Formular abgelegt wurde. Wählen Sie die Foundation Class auf dem Formular aus, und klicken Sie mit der rechten Maustaste, um das Kontextmenü aufzurufen. Wählen Sie im Kontextmenü den Befehl Generator, um den Generator zu starten.
Projekt-Manager Foundation Classes mit Basisklassen der Kategorie A oder B können vom Projekt-Manager gezogen und auf einem Formular abgelegt werden.
Wenn Sie eine Foundation Class vom Projekt-Manager auf ein Formular ziehen, wird der zugehörige Generator nicht automatisch gestartet. Sie können den Generator jedoch starten, nachdem die Foundation Class auf dem Formular abgelegt wurde. Wählen Sie die Foundation Class aus, und klicken Sie dann mit der rechten Maustaste, um das Kontextmenü anzuzeigen. Wählen Sie im Kontextmenü den Befehl Generator, um den Generator zu starten.
Symbolleiste für Formular-Steuerelemente Foundation Classes mit Basisklassen der Kategorie A oder B, die zur Symbolleiste für Formular-Steuerelemente hinzugefügt wurden, können zu einem Formular hinzugefügt werden.
Ist die Option Generator verwenden nicht aktiviert, kann durch das Ablegen von Foundation Classes auf der Symbolleiste für Formular-Steuerelemente ein zugehöriger Generator gestartet werden. Ist die Option Generator verwenden aktiviert, kann der Generator gestartet werden, nachdem die Foundation Class zum Formular hinzugefügt wurde. Wählen Sie die Foundation Class im Formular aus, und klicken Sie mit der rechten Maustaste, um das Kontextmenü aufzurufen. Wählen Sie im Kontextmenü den Befehl Generator, um den Generator zu starten.
Hinzufügen von Foundation Classes zu Projekten
Wird ein Foundation Classes enthaltendes Formular einem Visual FoxPro-Projekt hinzugefügt, so fügt der Projekt-Manager automatisch die die Foundation Classes enthaltenden Bibliotheken visueller Klassen dem Projekt hinzu. Es gibt jedoch auch andere Fälle, in denen Sie eventuell Foundation Classes zu einem Projekt hinzufügen müssen. So könnte eine Anwendung z. B. eine Foundation Class der Kategorie C ausführen; in diesem Fall muss die Foundation Class zum Projekt der Anwendung hinzugefügt werden.
Um Foundation Classes zu einem Projekt hinzuzufügen, können Sie die Komponentensammlung verwenden, die VCX-Bibliothek visueller Klassen, die die Foundation Classes enthält, aus Windows Explorer ziehen oder im Projekt-Manager die Schaltfläche Hinzufügen verwenden.
Hinzufügen von Foundation Classes aus der Komponentensammlung
Sie können eine Foundation Class aus der Komponentensammlung in ein Projekt ziehen oder in der Komponentensammlung mit der rechten Maustaste auf die Foundation Class klicken, um das Kontextmenü anzuzeigen, und dann den Befehl Zu Projekt hinzufügen wählen, um die Foundation Class zum Projekt hinzuzufügen. Wenn Sie eine Foundation Class zu einem Projekt hinzufügen, wird das Dialogfeld Klasse zum Projekt hinzufügen angezeigt, das die folgenden Optionen enthält:
- Klasse zum Projekt hinzufügen
Bei Auswahl dieser Option fügen Sie die Foundation Class und die zugehörige Klassenbibliothek (VCX) dem Projekt hinzu. Bei in das Formular gezogenen Klassen (Basisklassenkategorien A und B) geschieht dies automatisch. Möchten Sie bestimmte Klassen der Basisklassenkategorien B und C programmgesteuert in Ihrer Anwendung aufrufen, so können Sie diese Option verwenden. - Neue Klasse aus ausgewählter Klasse erstellen
Aktivieren Sie diese Option, wenn Sie eine neue Unterklasse aus der Foundation Class erstellen möchten, die Sie dem Projekt hinzufügen möchten. Diese Option ermöglicht es Ihnen, die Funktionalität der ursprünglichen Foundation Class zu erweitern. Dies erfolgt normalerweise durch Hinzufügen von zusätzlichem Programmcode. - Neues Formular aus ausgewählter Klasse erstellen
Aktivieren Sie diese Option für Foundation Classes mit der Basisklasse Form (z. B. die Foundation Classes in _dialogs.vcx). Diese Option ermöglicht es Ihnen, ein neues Formular auf Grundlage der Foundation Class zu erstellen und die Funktionalität der ursprünglichen Foundation Class zu erweitern.
Hinzufügen von Foundation Classes aus Windows Explorer
Sie können eine Foundation Class zu einem Projekt hinzufügen, indem Sie die VCX-Bibliothek visueller Klassen, die die Foundation Class enthält, aus Windows Explorer in den Projekt-Manager ziehen. Die visuelle Klassenbibliothek wird dem Element Klassenbibliotheken des Projekt-Managers hinzugefügt.
Hinzufügen von Foundation Classes innerhalb des Projekt-Managers
Sie können eine Foundation Class zu einem Projekt hinzufügen, indem Sie die Registerkarte Klassen auswählen und dann auf die Schaltfläche Hinzufügen klicken. Wählen Sie aus dem Ordner \Ffc\ die Klassenbibliothek aus, die die dem Projekt hinzuzufügende Foundation Class enthält.
Verwendung von Foundation Classes in Ihrer Anwendung
In vielen Situationen ist zur Verwendung der meisten Foundation Classes in einer Anwendung keine zusätzliche Programmierung erforderlich. Für bestimmte Foundation Classes (solche mit nicht-visuellen Basisklassen der Kategorien B und C) müssen Sie möglicherweise zusätzlichen Programmcode bereitstellen.
Nicht-visuelle Foundation Classes
Foundation Classes basieren beispielsweise oftmals auf der Custom-Klasse (Basisklassenkategorie B); diese Klassen erfordern zusätzliche Programmierung. Diese nicht-visuellen Foundation Classes führen häufig allgemeine Aufgaben wie das Überprüfen von Informationen in der Windows-Registrierung, die Verwaltung von Umgebungseinstellungen, die Handhabung von Anwendungsfehlern und die Durchführung der Automatisierung mit anderen Anwendungen (z. B. Serienbrieferstellung mit Microsoft Word) aus.
Sie können diese nicht-visuellen Klassen in ein Formular ziehen, aber damit diese in Ihrer Anwendung arbeiten, ist etwas zusätzliche Arbeit erforderlich. In einigen Fällen wird ein Generator gestartet, wenn Sie eine Foundation Class in ein Formular ziehen.
Das folgende Beispiel enthält einen Teil des Programmcodes, der üblicherweise notwendig ist, um eine nicht-visuelle Foundation Class in einer Anwendung zu verwenden:
Ziehen Sie die Foundation Class Dateiversion aus der Komponentensammlung (Ordner Fondation Classes\Dienstprogramme) in ein Formular.
Fügen Sie dem Formular eine Befehlsschaltfläche hinzu, und fügen Sie deren Click-Ereignis folgenden Code hinzu:
WITH THISFORM._FILEVERSION1 .cFileName = HOME( )+ 'VFP7.EXE' .GetVersion( ) .DisplayVersion( ) ENDWITH
Führen Sie das Formular aus, und klicken Sie auf die Befehlsschaltfläche.
Sie können in Ihrer Anwendung eine nicht-visuelle Klasse verwenden, ohne diese in ein Formular zu ziehen, solange Sie sie in das zur Erstellung Ihrer Anwendung verwendete Projekt einschließen. Der folgende Code veranschaulicht, wie diese Foundation Class Dateiversion ausgeführt werden kann, falls die Klasse nicht in ein Formular gezogen wurde.
LOCAL oFileVersion
oFileVersion = NewObject('_fileversion', '_utilities.vcx')
WITH oFileVersion
.cFileName = HOME( )+ 'VFP7.EXE'
.GetVersion( )
.DisplayVersion( )
ENDWITH
Anmerkung Dieses Beispiel setzt voraus, dass der Code die Klassenbibliothek _utilities.vcx finden kann oder dass er aus einer APP-Datei heraus ausgeführt wird, bei deren Erstellung _utilities.vcx einbezogen wurde.
Wenn Sie eine nicht-visuelle Foundation Class verwenden, müssen sie wissen, wie und wo die Klasse in Ihrer Anwendung verwendet wird, damit der Gültigkeitsbereich richtig gewählt wird. Verwendet nur ein einziges Formular die Klasse, so können Sie diese einfach in das Formular ziehen. Wird die Klasse jedoch von vielen Formularen oder gar global in der Anwendung verwendet, so sollte die Foundation Class einen globalen Gültigkeitsbereich in der Anwendung haben, so dass in der ganzen Anwendung auf sie zugegriffen werden kann. Ein globaler Gültigkeitsbereich kann auch zur Erhöhung der Leistung beitragen.
Visuelle Foundation Classes
Sie können Ihrer Anwendung auch visuelle Foundation Classes (z. B. solche mit der Basisklasse Form) programmgesteuert hinzufügen. Das folgende Beispiel zeigt, wie Sie Code zu einer Anwendung hinzufügen können, um ein Infodialogfeld anzuzeigen.
LOCAL oAbout
oAbout = NewObject('_aboutbox','_dialogs.vcx')
oAbout.Show( )
Sie können für jede Ihrer Anwendungen eine Unterklasse der Dialogfeld-Foundation Class erstellen, damit Sie den Inhalt des Dialogfeldes für jede Anwendung anpassen können. Das folgende Beispiel demonstriert, wie Sie eine Unterklasse der Foundation Class Aboutbox erstellen können:
Ziehen Sie die Klasse Aboutbox aus der Komponentensammlung (Ordner Foundation Classes\Dialogfelder) in das Projekt Ihrer Anwendung.
Aktivieren Sie im angezeigten Dialogfeld Klasse zum Projekt hinzufügen die Option Neues Formular aus ausgewählter Klasse erstellen, und geben Sie einen Namen für das Formular ein.
Ändern Sie die Caption-Eigenschaft für das neue Formular für Ihre Anwendung. Speichern und schließen Sie das Formular.
Fügen Sie Programmcode (DO FORM FormName) zu der Prozedur (z. B. der Prozedur für den Menübefehl Info) hinzu, die das Formular ausführt.
- Oder -
Ziehen Sie die Formular ausführen -Klasse aus der Komponentensammlung (Ordner Foundation Classes\Schaltflächen) in das Formular. Ein Generator wird gestartet, und Sie können nun den Namen des auszuführenden Formulars eingeben.
Wenn Sie das Visual FoxPro 7.0-Anwendungsframework verwenden, übernimmt der Anwendungs-Generator automatisch das Hinzufügen von Formularen (sowohl SCX- als auch die VCX-Formularklassen). Der neue Anwendungs-Assistent oder das Element Neue Anwendung der Komponentensammlung installiert dieses Framework in den von der jeweiligen Komponente erstellten Projekten. Der Anwendungs-Generator interagiert direkt mit dem Framework und ermöglicht Ihnen die Angabe, wie und wann ein Formular aufgerufen wird.
Durch Verwendung eines mit dem Anwendungs-Assistenten erstellten Frameworks, des Anwendungs-Generators und der Komponentensammlung verfügen Sie über einen reichhaltigen Satz von Hilfsmitteln zur Erstellung vollständiger Anwendungen mit minimaler manueller Codierung.
Namenskonventionen für Klassen
Die Visual FoxPro Foundation Classes, ihre Eigenschaften und Methoden verwenden die folgenden Namenskonventionen.
Klassen und Klassenbibliotheken
Bei den meisten Foundation Classes handelt es sich um Unterklassen von Klassen der Bibliothek visueller Klassen _base.vcx, die Sie ebenfalls im Ordner \Ffc\ finden. Die Namenskonventionen für diese Klasse spiegeln die verwendete Basisklasse wider. So erhält beispielsweise eine Unterklasse der Custom-Klasse in _base.vcx den Namen _Custom. Alle Klassen verwenden einen Unterstrich (_), der dem Namen einer Klasse in _base.vcx vorangestellt wird.
Einige wenige Klassenbibliotheken enthalten keine Klassen, die Unterklassen von Klassen in _base.vcx sind, da diese Klassen mit anderen Visual FoxPro-Komponenten wie Assistenten und Generatoren gemeinsam genutzt werden. Diese Klassen sind in Klassenbibliotheken ohne führenden Unterstrich (z. B. Registry.vcx) enthalten.
Methoden und Eigenschaften
Methoden basieren oft auf dem Namen einer Aktion, wie beispielsweise RunForm. Besteht der Name aus mehreren Wörtern (z. B. RunForm), so wird dies durch Großschreibung einzelner Kleinbuchstaben im Wort verdeutlicht. Eigenschaften wird üblicherweise ein einzelner Buchstabe vorangestellt, der den Datentyp der jeweiligen Eigenschaft charakterisiert. Beispielsweise weist cFileName darauf hin, dass die Eigenschaft vom Typ Zeichen ist. Außerdem werden die Standardwerte der Eigenschaften auch auf den entsprechenden Datentyp gesetzt. So kann beispielsweise eine logische Eigenschaft auf den Wert Falsch (.F.) initialisiert werden, eine numerische Eigenschaft hingegen auf den Wert 0.
Eigenschaften von Klassen, die mit früheren Versionen von Visual FoxPro ausgeliefert wurden, halten sich nicht strikt an diese Benennungskonventionen für Eigenschaften; sie behalten ihren alten Namen, um Kompatibilitätskonflikte mit Benutzercode zu vermeiden, der auf diese Eigenschaften verweist.
Verbessern oder Modifizieren von FoxPro Foundation Classes
Sie können die Visual FoxPro Foundation Classes verbessern oder modifizieren, damit diese den Bedürfnissen Ihrer Anwendung gerecht werden. Es empfiehlt sich jedoch, nicht die Foundation Classes selbst zu modifizieren, da die Foundation Classes regelmäßig mit neuer Funktionalität aktualisiert werden können.
Erstellen einer Unterklasse einer Foundation Class
Der Quellcode für die Foundation Classes steht zur Verfügung, so dass Sie zu jeder beliebigen Foundation Class Unterklassen erstellen können, um Eigenschaften und Methoden außer Kraft zu setzen oder zu verbessern. Das Erstellen von Unterklassen ist ein gängiges Verfahren, wenn das Verhalten einer bestimmten Foundation Class zwischen verschiedenen Anwendungen variiert. Eine Anwendung kann eine Foundation Class direkt verwenden, wohingegen eine andere Anwendung eine Unterklasse der Foundation Class verwendet.
Aktualisieren von "_base.vcx"
Wenn Sie globale Änderungen an den Visual FoxPro Foundation Classes vornehmen möchten, können Sie _base.vcx modifizieren. Da die Foundation Classes Unterklassen von _base.vcx sind, werden Änderungen an dieser Klassenbibliothek automatisch an die Foundation Classes weitergegeben. Für alle Klassen findet sich in _base.vcx ein gebräuchlicher Satz von Methoden und Eigenschaften. Sie können jedoch die Klassen in _base.vcx ändern, wenn sie dadurch das gewünschte Verhalten für Ihre Anwendungen bereitstellen (anders als die Foundation Classes, von deren Änderung wir Ihnen abraten).
Anstatt einer Änderung von _base.vcx sollten Sie jedoch die Klassen in _base.vcx neu definieren, um deren Verhalten von Ihren eigenen benutzerdefinierten Basisklassen (statt von den derzeit verwendeten Visual FoxPro-Basisklassen) zu erben. Wenn Sie bereits eine benutzerdefinierte Klassenbibliothek haben, welche Unterklassen der Visual FoxPro-Basisklassen enthält, können Sie die Klassen in _base.vcx neu definieren, damit diese von Ihren benutzerdefinierten Klassen erben; wenn dann Komponenten die Klassen von _base.vcx verwenden, erben sie auch von Ihren benutzerdefinierten Klassen. Zur Neudefinition der übergeordneten Klasse einer bestimmten Klasse können Sie den Klassenkatalog verwenden.
Anmerkung Wenn Sie die Klassen neu definieren, so dass sie Merkmale Ihrer eigenen benutzerdefinierten Basisklassen erben, sollten Sie an den entsprechenden Stellen DODEFAULT( )-Aufrufe hinzufügen, falls gewünscht ist, dass Methodencode der übergeordneten Klasse ausgeführt wird.
Wenn Sie die gesamte Klasse _base.vcx durch eine eigene Klasse ersetzen, sollten Sie sicherstellen, dass Sie über den gleichen Satz benannter Klassen verfügen, da die Foundation Classes andernfalls fehlerhafte Verweise aufweisen.
Siehe auch
Visual FoxPro Foundation Classes A-Z | Visual FoxPro Foundation Classes | Dateiversion | Infodialogfeld | Schaltfläche "Formular ausführen"