Freigeben über


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