Freigeben über


Schützen und Ausblenden von Klassenelementen

In einer Klassendefinition sind die Eigenschaften und Methoden standardmäßig als Global definiert: Mit Code aus anderen Klassen oder Prozeduren können die Eigenschaften festgelegt oder die Methoden aufgerufen werden. Auf Eigenschaften und Methoden jedoch, die Sie als Geschützt kennzeichnen, kann nur mit anderen Methoden in der Klassendefinition oder in Unterklassen dieser Klasse zugegriffen werden. Auf Eigenschaften und Methoden, die als Verborgen gekennzeichnet sind, kann nur mit anderen Elementen in der Klassendefinition zugegriffen werden. Für Unterklassen der Klasse sind verborgene Elemente "nicht sichtbar", und es kann kein Bezug darauf genommen werden.

Um ein korrektes Funktionieren einiger Klassen sicherzustellen, sollten Sie die Benutzer daran hindern, programmgesteuert die Eigenschaften zu ändern oder die Methode von außerhalb der Klasse aufzurufen.

Das folgende Beispiel veranschaulicht die Verwendung von geschützten Eigenschaften und Methoden in einer Klasse.

Die Stopwatch-Klasse in der Datei Samples.vcx, die im Visual FoxPro-Verzeichnis …\Samples\Classes zu finden ist, enthält einen Zeitgeber und fünf Beschriftungen zur Anzeige der abgelaufenen Zeit:

Die Stopwatch-Klasse enthält Beschriftungen und einen Zeitgeber.

Eigenschafteneinstellungen für die Stopwatch-Klasse

Steuerelement (Control) Eigenschaft Einstellung
LblSeconds Caption 00
lblColon1 Caption :
LblMinutes Caption 00
lblColon2 Caption :
LblHours Caption 00
TmrSWatch Interval 1000

Diese Klasse hat auch drei geschützte Eigenschaften (nSec, nMin und nHour) und eine geschützte Methode (UpdateDisplay). Die drei anderen benutzerdefinierten Methoden der Klasse (Start, Stop und Reset) sind nicht geschützt.

Tipp   Wählen Sie Klasseninfo aus dem Menü Klasse, um die Sichtbarkeit aller Eigenschaften und Methoden einer Klasse anzuzeigen.

Die geschützten Eigenschaften werden in internen Berechnungen in der UpdateDisplay-Methode und im Timer-Ereignis verwendet. Die UpdateDisplay-Methode legt die Beschriftungen zur Anzeige der abgelaufenen Zeit fest.

Die UpdateDisplay-Methode

Code Kommentar
cSecDisplay = ALLTRIM(STR(THIS.nSec))
cMinDisplay = ALLTRIM(STR(THIS.nMin))
cHourDisplay = ALLTRIM(STR(THIS.nHour))
Wandelt die numerischen Eigenschaften in den Zeichen-Datentyp zum Anzeigen in den Beschriftungen um.
THIS.lblSeconds.Caption = ;
 IIF(THIS.nSec < 10, ;
   "0" ,"") + cSecDisplay
THIS.lblMinutes.Caption = ;
  IIF(THIS.nMin < 10, ;
   "0", "") + cMinDisplay
THIS.lblHours.Caption = ;
  IIF(THIS.nHour < 10, ;
   "0", "") + cHourDisplay
Legt die Beschriftungen fest und behält die führende 0 bei, wenn der Wert der numerischen Eigenschaft kleiner 10 ist.

Die folgende Tabelle listet den Code im tmrSWatch.Timer-Ereignis auf.

Das Timer-Ereignis

Code Kommentar
THIS.Parent.nSec = THIS.Parent.nSec + 1
IF THIS.Parent.nSec = 60
  THIS.Parent.nSec = 0
  THIS.Parent.nMin = ;
  THIS.Parent.nMin + 1
ENDIF
Erhöht die nSec-Eigenschaft bei jeder Aktivierung der Timer-Eigenschaft: jede Sekunde.
Wenn nSec den Wert 60 erreicht hat, wird sie auf 0 zurückgesetzt und die nMin-Eigenschaft erhöht.
IF THIS.Parent.nMin = 60
  THIS.Parent.nMin = 0
  THIS.Parent.nHour = ;
  THIS.Parent.nHour + 1
ENDIF
THIS.Parent.UpdateDisplay
Wenn nMin den Wert 60 erreicht hat, wird sie auf 0 zurückgesetzt und die nHour-Eigenschaft erhöht.

Ruft die UpdateDisplay-Methode auf, wenn die neuen Eigenschaftswerte festgelegt sind.

Die Stopwatch-Klasse hat drei Methoden, die nicht geschützt sind: Start, Stop und Reset. Benutzer können diese Methoden direkt aufrufen, um die Stoppuhr zu steuern.

Die Start-Methode enthält die folgende Codezeile:

THIS.tmrSWatch.Enabled = .T.

Die Stop-Methode enthält die folgende Codezeile:

THIS.tmrSWatch.Enabled = .F.

Die Reset-Methode legt die geschützten Eigenschaften auf 0 fest und ruft die geschützte Methode auf:

THIS.nSec = 0
THIS.nMin = 0
THIS.nHour = 0
THIS.UpdateDisplay

Die Benutzer haben keine direkte Möglichkeit, diese Eigenschaften festzulegen oder diese Methode aufzurufen; dies kann nur mit Hilfe des Codes in der Reset-Methode geschehen.

Angeben des Standardwertes für eine Eigenschaft

Wenn Sie eine neue Eigenschaft erstellen, lautet deren Standardeinstellung Falsch (.F.). Im Eigenschaftenfenster können Sie eine andere Standardeinstellung für eine Eigenschaft angeben. Klicken Sie hierzu auf der Registerkarte Andere auf die betreffende Eigenschaft, und legen Sie sie auf den gewünschten Wert fest. Wenn die Klasse zu einem Formular oder Formularsatz hinzugefügt wird, ist dieser Wert die Anfangseinstellung der Eigenschaft.

Sie können jede der Basisklasseneigenschaften auch im Klassen-Designer festlegen. Wenn ein auf der Klasse basierendes Objekt einem Formular hinzugefügt wird, spiegelt das Objekt Ihre Einstellungen für die Eigenschaften und nicht diejenigen der Visual FoxPro-Basisklasse wider.

Tipp   Wenn Sie eine leere Zeichenfolge zur Standardeinstellung einer Eigenschaft machen möchten, markieren Sie die Einstellung im Eigenschaftenbearbeitungsfeld und drücken die RÜCKTASTE.

Siehe auch

Objektorientierte Programmierung | Klassen und Objekte: Die Bausteine einer Anwendung | Klassen in Visual FoxPro | Vorbereitung der Klassenerzeugung | Erstellen von Klassen | Ändern einer Klassendefinition | Erstellen einer Unterklasse zu einer Klassendefinition | Funktionsweise des Klassen-Designers | Angeben der Entwurfszeit-Darstellung | Erstellen, Kopieren und Entfernen von Klassenbibliotheksdateien | Hinzufügen von Klassen zu Formularen | Außer Kraft setzen der Standardeinstellungen von Eigenschaften | Verweisen auf Objekte in der Containerhierarchie | Setzen von Eigenschaften | Aufrufen von Methoden | Ereignisrückmeldung