Tasmanische Handelsgesellschaft - Klassenbibliotheken
Für Tasmanische Handelsgesellschaft wurden sechs Klassenbibliotheken erstellt. Einige der maßgeblichen Entscheidungen bei der Entwicklung von Tasmanische Handelsgesellschaft bezogen sich auf die Ebene, auf der bestimmte Funktionen integriert werden sollten:
- Die Anwendungsebene
- Die Formularebene
- Die Steuerelementebene
Tastrade - Beispiel: Funktionalität der Klasse "Application"
Eine generische Application-Klasse (Application) wurde in Tsgen.vcx erstellt und umfasst Funktionen, die für die meisten Anwendungen grundlegend sind. Diese Klasse stellt folgende Funktionalität zur Verfügung:
- Speichern der Visual FoxPro-Umgebung.
- Einrichten der Umgebung.
- Wiederherstellen der ursprünglichen Visual FoxPro-Umgebung.
- Ausführen des Hauptmenüs.
- Verwalten von Anwendungssymbolleisten.
- Verwalten des Verfahrens für die Benutzeranmeldung.
- Verwalten von Formularen.
Eine Unterklasse der Application-Klasse (Tastrade) in Main.vcx enthält zusätzliche Funktionalität speziell für Tasmanische Handelsgesellschaft.
- Anzeigen des Startbildschirms.
- Ausführen der Anfangskomponente.
In Main.prg wird ein Objekt (oApp) aus der Tastrade-Klasse erstellt.
In den folgenden Abschnitten wird die Funktionalität der Application-Klasse aufgelistet und beschrieben.
Speichern der Visual FoxPro-Umgebung
Die Application-Klasse speichert die Visual FoxPro-Umgebung, wenn die Anwendung ausgeführt wird. Die Visual FoxPro-Umgebung enthält SET-Befehlseinstellungen wie z. B. PATH, TALK, CARRY usw. Im Init-Ereignis der Application-Klasse fügt der Code basierend auf der Environment-Klasse in Tsgen.vcx ein neues Objekt zur Anwendung hinzu. Im Init-Ereignis der Environment-Klasse speichert der Code die vorhandenen Visual FoxPro-Umgebungseinstellungen als Eigenschaften der Klasse, so dass sie später wieder abgerufen werden können.
Der dem Init-Ereignis zugeordnete Code speichert auch den Titel des Visual FoxPro-Hauptfensters in der cOldWindCaption-Eigenschaft der Application-Klasse. Diese gespeicherten Einstellungen werden wiederhergestellt, wenn ein auf der Application-Klasse basierendes Objekt freigegeben wird.
Einen weiteren Umgebungsfaktor von Visual FoxPro bilden die Standardsymbolleisten, die aktiv sind, wenn eine Anwendung ausgeführt wird. Die Anwendungsmethode ReleaseToolbars( ) speichert die Namen von Systemsymbolleisten sowie Informationen darüber, ob sie geöffnet oder geschlossen waren, während die Anwendung ausgeführt wurde.
Code, der dem Init-Ereignis der Application-Klasse zugeordnet ist, legt auch das aktuelle Systemmenü im Menüstapelspeicher ab, damit es später wiederhergestellt werden kann.
Einrichten der Umgebung
Weiterer Code im Init-Ereignis der Application-Klasse erstellt die Laufzeitumgebung. Dieser Code:
- Ruft die Set( )-Methode der Environment-Klasse auf, die die Klassen- und Prozedurbibliotheken festlegt (CLASSLIB, PROCEDURE), die festlegt, ob gelöschte Datensätze angezeigt werden (DELETED), und die andere anwendungsspezifische Umgebungseinstellungen festlegt.
- Öffnet die Datenbank für die Anwendung.
- Ruft die ReleaseToolbars( )-Methode auf, um alle Systemsymbolleisten freizugeben, die während des Ausführens der Anwendung aktiv waren.
- Stellt den Fenstertitel des Visual FoxPro-Hauptfensters auf den Wert ein, der in der cMainWindCaption-Eigenschaft der Application-Klasse gespeichert ist.
Wiederherstellen der ursprünglichen Visual FoxPro-Umgebung
Beim Beenden der Anwendung stellt Code der Cleanup( )-Methode der Application-Klasse den ursprünglichen Titel des Visual FoxPro-Hauptfensters wieder her, schließt die Datenbank, löscht Fenster, führt CLEAR EVENTS aus, stellt das Ausgangsmenü wieder her und ruft die ShowToolbars( )-Methode auf, um die Visual FoxPro-Systemsymbolleisten erneut zu öffnen, die angezeigt wurden, bevor Tastrade.app ausgeführt wurde.
Beim Ausführen von CLEAR EVENTS wird die Programmausführung über den READ EVENTS-Befehl hinaus fortgesetzt, und der Code in Main.prg gibt oApp frei. Wenn das Application-Objekt freigegeben wurde, tritt das Destroy-Ereignis der Environment-Klasse auf, da es der Application-Klasse angehört.
Im Destroy-Ereignis des Umgebungsobjekts wird die Reset( )-Methode des Umgebungsobjekts aufgerufen, um die Visual FoxPro-Umgebungseinstellungen wiederherzustellen, die wirksam waren, als das Umgebungsobjekt erstellt wurde.
Ausführen des Hauptmenüs und Einrichten der Ereignisschleife
Zusätzlicher Code des Application-Objekts führt das der Anwendung zugeordnete Hauptmenü aus und richtet die Ereignisschleife ein. Die Do( )-Methode der Application-Klasse wird in Main.prg aufgerufen, sobald das Application-Objekt erstellt wurde. Die Do( )-Methode führt das Hauptmenüprogramm und READ EVENTS aus.
Verwalten von Anwendungssymbolleisten
Das Application-Objekt zeichnet auch Vorgänge bezüglich der Anwendungssymbolleisten auf. Eine Eigenschaft auf Formularebene gibt die Symbolleisten an, die dem jeweiligen Formular zugeordnet werden. Da es in dieser Anwendung nur eine Symbolleiste gibt, ist die Einstellung dieser Eigenschaft für alle Formulare in der Anwendung gleich.
Formulare innerhalb der Anwendung rufen die ShowNavToolbar( )-Methode der Application-Klasse auf, um die Symbolleiste anzuzeigen. Die Anwendung weiß, ob die Symbolleiste bereits existiert und zeigt sie nur an, wenn dies erforderlich ist. Dabei wird die nFormInstanceCount-Eigenschaft jedes Mal um einen Schritt heraufgesetzt.
Die ReleaseNavToolbar( )-Methode der Anwendung, die im Destroy-Ereignis der Formulare aufgerufen wird, setzt die nFormInstanceCount-Eigenschaft jeweils um einen Schritt zurück und entfernt die Symbolleiste, nachdem das letzte Formular freigegeben wurde.
Verwalten der Benutzeranmeldeprozedur
Die meisten Anwendungen, bei denen es auf Sicherheit ankommt, verfügen über eine Anmeldungsprozedur. Um diese Prozedur zu verwalten, ruft die Login( )-Methode der Application-Klasse die DoFormRetVal( )-Methode auf und übergibt dabei den Klassennamen des Anmeldungsbildschirmes. Wenn sich Benutzer anmelden, speichert eine Eigenschaft der Application-Klasse, cUserLevel, die Zugriffsberechtigungsebene, die für diese Person gilt.
Diese Eigenschaft wird im Menüabschlusscode verwendet, um Menüeinträge zu entfernen, die für bestimmte Personen nicht sichtbar sein sollen.
Verwalten von Formularen
Außer den Formularen, die für Wertebereicheinstellungen für Berichte verwendet werden, werden die Formulare in Tasmanische Handelsgesellschaft von den Methoden der Application-Klasse angezeigt. Die DoForm( )-Methode akzeptiert den Namen eines Formulars und einen Parameter, der optional an das Formular übergeben werden kann. Die DoFormRetVal( )-Methode akzeptiert den Namen einer Formularklasse und gibt einen im Formular angegebenen Wert zurück.
Startbildschirm anzeigen
Die Unterklasse der Application-Klasse (Tastrade) in Main.vcx enthält zusätzliche Funktionen speziell für Tasmanische Handelsgesellschaft. Das Init-Ereignis ruft den übergeordneten Klassencode in der Application-Klasse und, wenn der Begrüßungsbildschirm angezeigt werden soll, DoFormRetVal("introform") auf.
Ausführen der Anfangskomponente, wenn sich ein Benutzer anmeldet
Die Unterklasse der Application-Klasse (Tastrade) in Main.vcx enthält zusätzliche Funktionen speziell für Tasmanische Handelsgesellschaft. Code in der Do( )-Methode setzt das standardmäßige Verhalten der Do( )-Methode der Application-Klasse außer Kraft. Code in der Do( )-Methode ruft die GetStartupAction( )-Methode auf, die die Anwendungskomponente zurückgibt, die nach der Anmeldung eines Benutzers ausgeführt werden soll. Wenn für einen Benutzer eine Standardkomponente angegeben ist, führt der Code in der Do( )-Methode diese Anfangskomponente aus.
Tastrade - Beispiel: Funktionalität der Formularklassen
Tasmanische Handelsgesellschaft umfasst diese Typen von Formularen:
- Modale Formulare, die einen Wert zurückgeben (z. B. das Formular Login).
- Dateneingabeformulare (z. B. die Formulare Customerinfo und Orderentry).
- Nachschlageformulare (FindCustomer und FindOrder).
- Allgemeine Formulare (z. B. die Formulare Aboutbox und Introform).
Die folgende Liste enthält die Formularklassen und ihre Hierarchien in Tasmanische Handelsgesellschaft:
Formularklasse | Klassenbibliothek |
---|---|
tsFormRetVal | Tsbase.vcx |
IntroForm |
Tsgen.vcx |
Login |
Login.vcx |
LoginPicture |
Login.vcx |
FindCustomer |
Tsgen.vcx |
FindOrder |
Tsgen.vcx |
tsBaseForm | Tsbase.vcx |
tsMaintForm |
Tsbase.vcx |
tsTextForm |
Tsbase.vcx |
OrderEntry |
Orders.vcx |
About |
About.vcx |
Modale Formulare
Alle Formulare, die einen Wert zurückgeben, sind mehr oder weniger von tsFormRetVal
in Tsbase.vcx abgeleitet. Alle Klassen von Dateneingabeformularen basieren auf tsBaseForm
in Tsbase.vcx.
tsFormRetVal
verhindert den Zugriff auf andere Komponenten, solange es aktiv ist.
Eigenschaftseinstellungen
AutoCenter = | .T. |
BackColor = | Hellgrau |
BorderStyle = | 2 - Fixed Dialog |
FontSize = | 8 |
MaxButton = | .F. |
MinButton = | .F. |
WindowType = | 1 - Modal |
Benutzerdefinierte Eigenschaften
uRetVal: | Enthält den Rückgabewert des Formulars. Jeder Datentyp ist möglich. Das Präfix "u" steht für "unbekannt". Standardwert für uRetVal ist .T. |
Um eine Instanz einer Unterklasse zu erstellen, rufen Sie Application.DoFormRetVal
auf.
Dateneingabeformulare
Formulare zur Dateneingabe basieren auf der tsBaseForm-Klasse und sind eng mit der tsToolbar-Klasse verbunden. tsBaseForm ist die übergeordnete Klasse der meisten Formulare der Anwendung Tasmanische Handelsgesellschaft. Sie stellt folgende Funktionen zur Verfügung:
- Tabellennavigation
- Verwalten des Benutzerdatenzugriffs
- Koordination der Benutzeroberfläche
Eigenschaftseinstellungen
BufferMode = | 2-Optimistisch |
Benutzerdefinierte Eigenschaften
aerrormsg[3] = | Ein Array, das Fehlermeldungen enthält. Dies ermöglicht es, in der übergeordneten Klasse generischen Fehlerbehandlungscode zu schreiben, während in jeder Unterklasse benutzerdefinierte Fehlermeldungen festgelegt werden können. Durch den Code, der jeweils dem Init-Ereignis bestimmter Formulare zugeordnet ist, werden folgende Standardwerte definiert: |
aerrormsg[1] = | "Insert-Trigger versagte!" |
aerrormsg[2] = | "Update-Trigger versagte!" |
aerrormsg[3] = | "Delete-Trigger versagte!" |
CToolBar: | Enthält den Namen der Symbolleiste, die ausgeführt werden soll, wenn das Formular ausgeführt wird. |
LAllowEdits: | Legt fest, ob der aktuelle Datensatz bearbeitet werden kann. |
lAllowDelete: | Legt fest, ob der aktuelle Datensatz gelöscht werden kann. |
lAllowNew: | Legt fest, ob der Benutzer neue Datensätze hinzufügen darf. |
Ereignissen zugeordnete Funktionen
Init: | 1. Stellt die vorherige Fensterposition wieder her. 2. Fügt den Formulartitel zum Menü hinzu. 3. Zeigt die Navigationssymbolleiste an. 4. Initialisiert das Array für benutzerdefinierte Fehlermeldungen, aerrormsg[ ]. |
Activate: | 1. Wählt den Alias aus, der in der InitialSelectedAlias-Eigenschaft der Datenumgebung des Formulars angegeben ist. 2. Aktualisiert die Navigationssymbolleiste. 3. Aktualisiert das Menü. 4. Stellt die Meldung der Statusleiste auf die Caption-Eigenschaft des Formulars ein. |
Error: | Definiert allgemeinen Fehlerbehandlungscode für alle Formulare. |
Destroy: | 1. Entfernt den Formulartitel aus dem Menü. 2. Sichert die Fensterposition in der Datei Tastrade.ini. |
QueryUnload: | Überprüft, ob Daten geändert wurden und fordert Benutzer nötigenfalls zum Speichern der Änderungen auf. |
Unload: | Löscht den Inhalt der Statusleiste. |
Benutzerdefinierte Methoden
First: | Bewegt den Datensatzzeiger zum ersten Datensatz. |
Next: | Bewegt den Datensatzzeiger zum nächsten Datensatz. |
Prior: | Bewegt den Datensatzzeiger zum vorherigen Datensatz. |
Last: | Bewegt den Datensatzzeiger zum letzten Datensatz. |
Diese vier Methoden haben folgende Verhaltensweisen gemeinsam:
- Sie rufen die benutzerdefinierte DataChanged( )-Methode des Formulars auf, um Änderungen festzustellen.
- Sie rufen die benutzerdefinierte AskToSave( )-Methode des Formulars auf, um Benutzer zum Speichern von Änderungen aufzufordern.
Benutzerdefinierte Methoden
Save: | Speichert den aktuellen Datensatz. |
Delete: | Löscht den aktuellen Datensatz. |
AddNew: | Fügt einen neuen Datensatz hinzu. |
Restore: | Stellt ursprüngliche Feldwerte wieder her (Rückgängigmachen von Änderungen). |
AddToMenu: | Fügt den Formulartitel zum Menü Fenster hinzu. |
RemoveFromMenu: | Entfernt den Formulartitel aus dem Menü Fenster. |
AskToSave: | Fordert Benutzer auf, Änderungen zu speichern, nicht zu speichern oder den letzten Vorgang rückgängig zu machen. |
DataChanged: | Gibt Wahr (.T.) zurück, wenn Daten im aktuellen Formular geändert wurden. |
WriteBuffer: | Code, um den Wert des aktuellen Steuerelements in den Datensatzpuffer zu übertragen. |
RefreshForm: | Benutzerdefinierte zur Aktualisierung. |
SaveWindowPos: | Schreibt die Eigenschaften Top und Left des Formulars in die INI-Datei der Anwendung. |
RestoreWindowPos: | Liest die Eigenschaften Top und Left des Formulars aus der INI-Datei der Anwendung und stellt sie ein. |
WaitMode: | Ändert für alle Steuerelemente des Formulars den Cursor in eine Sanduhr. |
Nachschlageformulare
Die Formulare FindCustomer und FindOrder zeigen jeweils die Tabellen Customer und Order in einem Raster an und ermöglichen es den Benutzern, Änderungen am Indexnamen vorzunehmen. Der Schlüsselwert der ausgewählten Zeile wird an das aufrufende Formular zurückgegeben, wenn es von Benutzern geschlossen wird.
Allgemeine Formulare
Es gibt zwei allgemeine Formulare:
- AboutBox
AboutBox in About.vcx akzeptiert in seinem Init-Ereignis Parameter für Titeltexte und ein Logo-Bitmap. Diese Klasse verwendet API-Funktionen, um entweder aus der Datei Win.ini (unter Windows 3.x) oder aus der Systemregistrierung Informationen abzurufen, mit deren Hilfe Systeminformationen angezeigt werden. - IntroForm
IntroForm in Tsgen.vcx ist der Begrüßungsbildschirm. Code, der dem Click-Ereignis von chkShowAtStartUp in dieser Klasse zugeordnet ist, schreibt einen Wert in die Datei Tastrade.ini, um anzugeben, ob der Begrüßungsbildschirm auch beim zukünftigen Ausführen von Tasmanische Handelsgesellschaft angezeigt werden soll.
Tastrade - Beispiel: Steuerelementklassen-Funktionalität
Aus den meisten der Visual FoxPro-Basissteuerelementklassen wurden Unterklassen abgeleitet, um zusätzliche Standardfunktionen oder eine konsistente Darstellung zu gewährleisten. Jedes Mal, wenn Gruppen von Steuerelementen an mehr als einer Stelle innerhalb von Tasmanische Handelsgesellschaft benötigt wurden, wurde eine Klasse erstellt.
Da die Anwendung mit einer Bildschirmauflösung von 640 x 480 ausgeführt werden sollte, wurde die Standardschriftart für diese Steuerelemente auf 8 Punkt statt auf 10 Punkt eingestellt, um innerhalb der Formulare Platz zu sparen.
In der folgenden Tabelle werden die Steuerelementklassen nach Bibliotheken aufgelistet:
"Tsbase.vcx"-Klassenbibliothek
Klasse | Beschreibung |
---|---|
Ts3dShape | Klasse für Form-Steuerelemente (Shape), die zumeist zur Hervorhebung oder Abgrenzung von Teilen eines Formulars verwendet werden. |
TsComboBox | Klasse für alle Kombinationsfelder in der Anwendung. |
TsCommandButton | Klasse für alle Befehlsschaltflächen in der Anwendung. |
TsEditBox | Klasse für alle Bearbeitungsfelder in der Anwendung. |
TsGrid | Die SumColumn-Methode wird zur automatischen Addition von Werten in einer Datenrasterspalte verwendet. Diese Klasse wurde zu der Seite Liste des Seitenrahmens in der tsMaintForm-Klasse hinzugefügt. |
TsLabel | Klasse für alle Bezeichnungen in der Anwendung. |
TsListBox | Klasse für alle Listenfelder in der Anwendung. |
TsTextBox | Klasse für alle Textfelder in der Anwendung. |
OrdTextbox | Eine Unterklasse von tsTextbox, die in den Formularen Auftragseingabe und Auftragsstatistik verwendet wird. |
TsToolBarButton | Klasse für alle Befehlsschaltflächen, die auf Symbolleisten in der Anwendung verwendet werden. |
"Tsgen.vcx"-Klassenbibliothek
Klasse | Beschreibung |
---|---|
CustomerInfo | Enthält Bezeichnungen und Textfelder für Felder der Customer-Tabelle. |
DateRange | Ein benutzerdefiniertes Steuerelement, das auf der Basisklasse für Steuerelemente von Visual FoxPro basiert. |
Splitter | Wird auf dem Formular Hintergrund als Unterteilung zwischen den Listenfeldern Programmierthema und Funktionsweise verwendet, um ihre horizontalen Ausdehnungen den Vorgaben der Benutzer anzupassen. |
TsMaintForm | Klasse für alle Verwaltungsformulare dieser Anwendung. |
TsToolBar | Klasse für die Symbolleiste der Anwendung. |
Siehe auch
Lösungsbeispiele | Beispiel Tasmanische Handelsgesellschaft | Entwerfen der Datenbank "Tastrade" | Entwerfen und Erstellen der Klassen der Beispielanwendung Tasmanische Handelsgesellschaft | Schreiben, Testen und Debuggen von Tasmanische Handelsgesellschaft