CREATEOBJECT( )-Funktion
Erstellt ein Objekt aus einer Klassendefinition oder einer automationsfähigen Anwendung.
CREATEOBJECT(ClassName [, eParameter1, eParameter2, ...])
Rückgabewerte
Objekt
Parameter
ClassName
Gibt die Klasse oder das OLE-Objekt an, aus der bzw. dem das neue Objekt erstellt wird. Visual FoxPro sucht in der folgenden Reihenfolge nach der Klasse bzw. dem OLE-Objekt:- Visual FoxPro-Basisklassen.
- Klassen im aktuellen Programm.
- Klassen in Bibliotheken visueller Klassen (VCX), die mit SET CLASSLIB geöffnet wurden.
- Klassen in Prozedurdateien, die mit SET PROCEDURE geöffnet wurden.
- Klassen in der Visual FoxPro-Programmausführungskette.
- Die OLE-Registrierung, wenn SET OLEOBJECT auf ON gesetzt ist.
OLE-Objekte werden erstellt, wenn Sie für ClassName die folgende Syntax verwenden:
ApplicationName.Class
Wenn Sie z. B. eine Microsoft Excel-Tabelle, die Automation unterstützt, erstellen möchten, verwenden Sie die folgende Syntax:
x = CREATEOBJECT('Excel.Sheet')
Wenn Sie diesen Code ausführen, wird Microsoft Excel gestartet (sofern es noch nicht ausgeführt wird), und eine neue Tabelle wird erstellt.
Eine Klassenbibliothek kann einen Alias haben. Wenn Sie ein Objekt in einer Klassenbibliothek angeben möchten, die einen Alias hat, geben Sie den Alias der Klassenbibliothek gefolgt von einem Punkt und dem Namen des Objekts an.
Beachten Sie, dass ClassName nicht die Basisklasse für Visual FoxPro-OLE-Container-Steuerelemente sein kann.
eParameter1, eParameter2, ...
Mit diesen optionalen Parametern werden Werte an die Init-Ereignisprozedur der Klasse übergeben. Das Init-Ereignis wird ausgeführt, wenn Sie CREATEOBJECT( ) ausgeben; mit diesem Ereignis können Sie das Objekt initialisieren.
Hinweise
Mit CREATEOBJECT( ) können Sie auf Basis einer Klassendefinition oder aus einer Anwendung, die Automation unterstützt, ein Objekt erstellen und einer Speichervariablen oder einem Arrayelement einen Verweis auf das Objekt zuweisen.
Bevor Sie aus einer benutzerdefinierten Klasse ein Objekt erstellen können, muss die benutzerdefinierte Klasse mit DEFINE CLASS erstellt werden oder in einer Bibliothek visueller Klassen (VCX) zur Verfügung stehen, die mit SET CLASSLIB geöffnet wurde.
Verwenden Sie = oder STORE, um einer Speichervariablen oder einem Arrayelement einen Verweis auf das Objekt zuzuweisen. Wird ein Objekt freigegeben, das einer Speichervariablen oder einem Arrayelement zugewiesen ist, enthält die Speichervariable oder das Arrayelement einen NULL-Wert. Verwenden Sie RELEASE, um die Speichervariable oder das Arrayelement aus dem Arbeitsspeicher zu entfernen.
Beispiel
Im folgenden Beispiel werden mittels DEFINE CLASS und CREATEOBJECT( ) aus der Visual FoxPro-Formularbasisklasse zwei benutzerdefinierte Klassen namens FormChild und FormGrandChild erstellt. Mit ACLASS( ) wird ein Array mit Namen gaNewarray
erstellt, das die Klassennamen enthält, die anschließend angezeigt werden.
CLEAR
* Verify current class library setting
cCurClassLib=SET("CLASSLIB")
IF LEN(ALLTRIM(cCurClassLib))=0
cCurClassLib="None"
ENDIF
WAIT WINDOW "Current class library is: " + cCurClassLib + CHR(13);
+ "Press any key to continue..."
frmMyForm = CREATEOBJECT("FormGrandChild")
* Create an array
FOR nCount = 1 TO ACLASS(gaNewarray, frmMyForm)
? gaNewarray(nCount) && Display the names of the classes
ENDFOR
RELEASE frmMyForm
* Create FormChild from FORM baseclass
DEFINE CLASS FormChild AS FORM
ENDDEFINE
* Create FormGrandChild from user-defined FormChild class
DEFINE CLASS FormGrandChild AS FormChild
ENDDEFINE
Siehe auch
_BROWSER | COMCLASSINFO( ) | CREATEOBJECTEX( ) | DEFINE CLASS | GETOBJECT( ) | RELEASE | SET CLASSLIB | SET OLEOBJECT