Access- und Assign-Methoden

Microsoft® Visual FoxPro® wurde um die Unterstützung von Access- und Assign-Methoden erweitert. Mit Hilfe dieser benutzerdefinierten Methoden können Sie Code ausführen, wenn der Wert einer Eigenschaft abgefragt wird oder wenn Sie versuchen, den Wert der Eigenschaft zu ändern.

Der in einer Zugriffsmethode enthaltene Code wird beim Abfragen des Wertes der Eigenschaft ausgeführt, und zwar normalerweise, indem die Eigenschaft in einem Objektverweis verwendet und der Wert der Eigenschaft in einer Variablen gespeichert wird oder indem der Wert der Eigenschaft mit einem Fragezeichen (?) angezeigt wird.

Der Code einer Zuweisungsmethode wird ausgeführt, wenn Sie versuchen, den Wert einer Eigenschaft zu ändern, was normalerweise über den Befehl STORE oder = geschieht, mit dem der Eigenschaft ein neuer Wert zugewiesen wird.

Access- und Assign-Methoden werden ausgeführt, wenn die Werte von Eigenschaften abgefragt oder nur zur Laufzeit geändert werden. Beim Abfragen oder Ändern der Werte von Eigenschaften zur Entwurfszeit werden Access- und Assign-Methoden nicht ausgeführt.

Anmerkung   Da der Wert, den Sie der Eigenschaft zuweisen möchten, an die Assign-Methode übergeben wird, müssen Sie eine PARAMETERS- oder LPARAMETERS-Anweisung in die Assign-Methode einschließen, um den Wert zu akzeptieren.

Access- und Assign-Methoden können unabhängig voneinander erstellt werden, d. h., Sie können eine Access-Methode ohne Assign-Methode oder eine Assign-Methode ohne Access-Methode erstellen.

Access- und Assign-Methoden können für Eigenschaften erstellt werden, die programmgesteuert in einer DEFINE CLASS-Anweisung erstellt werden oder die interaktiv für ein Formular oder eine Klasse mit den Formular- und Klassen-Designern erstellt werden. Access- und Assign-Methoden

Anmerkung   Access- und Assign-Methoden können auch für alle systemeigenen Visual FoxPro-Eigenschaften erstellt werden. Sie können beispielsweise eine Access-Methode für die Left-Eigenschaft eines Formulars erstellen, so dass Sie Code immer dann ausführen können, wenn die Left-Eigenschaft des Formulars abgefragt wird. Für eine systemeigene schreibgeschützte Visual FoxPro-Eigenschaft (wie z. B. die ParentClass-Eigenschaft) kann zwar eine Assign-Methode erstellt werden, die Methode wird jedoch nicht ausgeführt.

Vorteile von Access- und Assign-Methoden

Access- und Assign-Methoden bieten die folgenden Vorteile:

  • Sie können eine öffentliche Schnittstelle für eine Klasse oder ein Objekt erstellen, die die Schnittstelle von der Implementierung trennt.
  • Sie können auf einfache Art eine Gültigkeitsprüfung für Eigenschaften implementieren.
  • Sie können auf einfache Art Eigenschaften in Unterklassen von ActiveX-Steuerelementen schützen.

THIS_ACCESS-Methode

Visual FoxPro verfügt nun über die neue globale Klassenmethode THIS_ACCESS. Der Code in einer THIS_ACCESS-Methode wird immer dann ausgeführt, wenn Sie den Wert für ein Element eines Objekts ändern oder wenn ein Element eines Objekts abgefragt wird.

Eine THIS_ACCESS-Methode wird im Code in einem DEFINE CLASS-Befehl oder in den Dialogfeldern Neue Methode oder Eigenschaften bearbeiten für visuelle VCX-Klassenbibliotheken erstellt. Eine THIS_ACCESS-Methode muss immer einen Objektverweis zurückgeben; ansonsten wird ein Fehler generiert. In der Regel wird der Objektverweis THIS zurückgeben. Zudem muss eine THIS_ACCESS-Methode einen Parameter enthalten, um den Namen des Elements des Objekts zu akzeptieren, das geändert oder abgefragt wird.

Das folgende einfache Beispiel zeigt die Erstellung einer THIS_ACCESS-Methode im Code innerhalb eines DEFINE CLASS-Befehls. Wenn dieses Beispiel als Programm ausgeführt wird, wird "Caption" zweimal angezeigt: einmal, wenn der Caption-Eigenschaft ein Wert zugewiesen wird, und ein zweites Mal, wenn der Wert der Caption-Eigenschaft abgefragt wird. Der Wert der Caption-Eigenschaft ("abc") wird angezeigt.

CLEAR
oTempObj = CREATEOBJECT('MyForm')  && Instantiate the Form
oTempObj.Caption = 'abc'  && Assign a value, triggers THIS_ACCESS
? oTempObj.Caption  && Query a value, triggers THIS_ACCESS

DEFINE CLASS MyForm AS Form
 PROCEDURE THIS_ACCESS
 LPARAMETER cMemberName  && Object member name

 IF cMemberName = 'caption'
 ? cMemberName  && Display the object member name
 ENDIF
 RETURN THIS
 ENDPROC
ENDDEFINE

Beachten Sie, dass die THIS_ACCESS-Methode keinen globalen Ersatz für die Access- und Assign-Methoden darstellen soll - sie gibt lediglich Informationen darüber zurück, auf welches Objektelement zugegriffen wird bzw. welches Objektelement abgefragt wird. Anders als bei einer Access- oder Assign-Methode stellt THIS_ACCESS keine Steuerung für die Werte zur Verfügung, die zu spezifischen Objektelementen zurückgegeben werden.

Siehe auch

Objektorientierte Programmierung | Klassen in Visual FoxPro | Aufrufen von Methoden | Erstellen von Access- und Assign-Methoden