Außer Kraft setzen der Standardeinstellungen von Eigenschaften
Wenn Sie Objekte zu einem Formular hinzufügen, die auf einer benutzerdefinierten Klasse basieren, können Sie die Einstellungen aller nicht geschützten Eigenschaften der Klasse ändern und so die Standardeinstellungen außer Kraft setzen. Falls Sie die Klasseneigenschaften später im Klassen-Designer ändern, werden die Einstellungen im Objekt auf dem Formular dadurch nicht beeinflusst. Haben Sie keine Eigenschaftseinstellung im Formular geändert und ändern Sie die Eigenschaftseinstellung in der Klasse, wird diese Änderung auch im Objekt wirksam.
Beispielsweise könnte ein Benutzer einem Formular ein auf Ihrer Klasse basierendes Objekt hinzufügen und die BackColor-Eigenschaft von Weiß in Rot ändern. Falls Sie die BackColor-Eigenschaft der Klasse in Grün ändern, behält das Objekt im Formular des Benutzers weiterhin die BackColor-Eigenschaft Rot. Hat der Benutzer aber die BackColor-Eigenschaft des Objekts nicht geändert, während Sie die BackColor-Eigenschaft der Klasse in Grün geändert haben, würde die BackColor-Eigenschaft des Objekts im Formular die Änderung erben und ebenfalls Grün sein.
Aufrufen von Methodencode einer übergeordneten Klasse
Ein auf einer anderen Klasse basierendes Objekt oder eine Klasse erbt automatisch die Funktionalität des Originals. Sie können diesen vererbten Methodencode jedoch leicht außer Kraft setzen. So können Sie beispielsweise neuen Code für das Click-Ereignis einer Klasse schreiben, nachdem Sie Unterklassen davon abgeleitet oder nachdem Sie ein auf der Klasse basierendes Objekt einem Container zugewiesen haben. In beiden Fällen wird der neue Code zur Laufzeit ausgeführt; der ursprüngliche Code wird nicht ausgeführt.
Es kommt jedoch häufiger vor, dass Sie die Funktionalität der neuen Klasse oder des neuen Objekts erweitern möchten, während die ursprüngliche Funktionalität erhalten bleibt. Tatsächlich besteht eine der Schlüsselentscheidungen bei der objektorientierten Programmierung darin, festzulegen, welche Funktionalität auf Klassenebene, welche auf Unterklassenebene und welche auf Objektebene zugeordnet werden soll. Sie können Ihren Klassenentwurf optimieren, indem Sie die DODEFAULT( )-Funktion oder den Geltungsbereich-Auflösungsoperator (::) verwenden, um Code auf den verschiedenen Ebenen der Klassen- oder Containerhierarchie hinzuzufügen.
Hinzufügen von Funktionalität zu Unterklassen
Sie können den Code einer übergeordneten Klasse von einer Unterklasse aus aufrufen, indem Sie die DODEFAULT( )-Funktion verwenden.
So ist beispielsweise cmdOK
eine Befehlsschaltflächen-Klasse, die in der Datei Buttons.vcx im Visual FoxPro-Verzeichnis …\Samples\Classes gespeichert ist. Der mit dem Click-Ereignis verknüpfte Code von cmdOk
gibt das Formular frei, auf dem sich die Schaltfläche befindet. CmdCancel
ist eine Unterklasse von cmdOk
in derselben Klassenbibliothek. Um nun beispielsweise cmdCancel
mit der Funktionalität zum Verwerfen von Änderungen auszustatten, könnten Sie dem Click-Ereignis folgenden Code hinzufügen:
IF USED( ) AND CURSORGETPROP("Buffering") != 1
TABLEREVERT(.T.)
ENDIF
DODEFAULT( )
Da die Änderungen standardmäßig in eine gepufferte Tabelle geschrieben werden, wenn die Tabelle geschlossen wird, müssen Sie den Code TABLEUPDATE( ) nicht zu cmdOk
hinzufügen. Der zusätzliche Code in cmdCancel
macht die Änderungen an der Tabelle rückgängig, bevor der Code in cmdOk
, der übergeordneten Klasse (ParentClass), aufgerufen wird, um das Formular freizugeben.
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 | Schützen und Ausblenden von Klassenelementen | Angeben der Entwurfszeit-Darstellung | Erstellen, Kopieren und Entfernen von Klassenbibliotheksdateien | Hinzufügen von Klassen zu Formularen | Verweisen auf Objekte in der Containerhierarchie | Setzen von Eigenschaften | Aufrufen von Methoden | Ereignisrückmeldung