Freigeben über


Erstellung eines Objektverweises

Statt der Kopie eines Objekts können Sie auch einen Verweis auf das Objekt erstellen. Ein Verweis benötigt weniger Arbeitsspeicher als ein weiteres Objekt, kann zwischen Prozeduren einfach übergeben werden und kann beim Schreiben von generischem Code hilfreich sein.

Rückgabe eines Verweises auf ein Objekt

Manchmal möchten Sie ein Objekt möglicherweise unter Verwendung eines oder mehrerer Verweise bearbeiten. Im folgenden Programm wird beispielsweise eine Klasse definiert, ein auf dieser Klasse basierendes Objekt erstellt und ein Verweis auf das Objekt zurückgegeben:

*--NEWINV.PRG
*--Returns a reference to a new invoice form.
frmInv = CREATEOBJECT("InvoiceForm")
RETURN frmInv
 
DEFINE CLASS InvoiceForm AS FORM
   ADD OBJECT txtCompany AS TEXTBOX
   * code to set properties, add other objects, and so on
ENDDEFINE

Das folgende Programm erstellt einen Verweis auf das in Newinv.prg erstellte Objekt. Die Verweisvariable kann genauso verwendet werden wie die Objektvariable:

frmInvoice = NewInv() && store the object reference to a variable
frmInvoice.SHOW

Das folgende Beispiel zeigt, dass Sie auch einen Verweis auf ein Objekt eines Formulars erstellen können:

txtCustName = frmInvoice.txtCompany
txtCustName.Value = "Fox User"

Tipp   Nachdem Sie ein Objekt erstellt haben, können Sie den Befehl DISPLAY OBJECTS verwenden, um die Klassenhierarchie des Objekts, die Eigenschaftseinstellungen, darin enthaltene Objekte sowie verfügbare Methoden und Ereignisse anzuzeigen. Sie können ein Array mit Hilfe der AMEMBERS( )-Funktion mit den Eigenschaften (nicht den Eigenschaftseinstellungen) eines Objekts, den Ereignissen, Methoden und darin enthaltenen Objekten füllen.

Entfernen von Objekten und Verweisen aus dem Arbeitsspeicher

Wenn ein Verweis auf ein Objekt besteht, wird das Objekt bei seiner Freigabe nicht automatisch aus dem Arbeitsspeicher entfernt. Der folgende Befehl gibt z. B. das Originalobjekt frmInvoice frei:

RELEASE frmInvoice

Weil jedoch noch ein Verweis auf ein zu frmInvoice gehörendes Objekt vorhanden ist, wird das Objekt erst aus dem Arbeitsspeicher entfernt, wenn txtCustName über folgenden Befehl freigegeben wird:

RELEASE txtCustName

Überprüfen der Existenz eines Objekts

Mit Hilfe der Funktionen TYPE( ), ISNULL( ) und VARTYPE( ) können Sie ermitteln, ob ein Objekt vorhanden ist. Die folgenden Codezeilen überprüfen beispielsweise, ob ein Objekt namens oConnection existiert:

IF TYPE("oConnection") = "O" AND NOT ISNULL(oConnection)
   * Object exists
ELSE
   * Object does not exist
ENDIF

Anmerkung   ISNULL( ) ist erforderlich, weil .NULL. zwar in der Formularobjektvariablen gespeichert wird, wenn ein Benutzer ein Formular schließt, der Variablentyp jedoch "O" bleibt.

Siehe auch

Programmgesteuertes Schreiben von Klassendefinitionen | Definition eines Datenraster-Steuerelements | Arrays von Elementen und Objekten | DISPLAY OBJECTS | AMEMBERS( ) | Objektorientierte Programmierung