Share via


CREATEOBJECT( ) (Función)

Crea un objeto a partir de una definición de clase o una aplicación preparada para Automatización.

CREATEOBJECT(ClassName [, eParameter1, eParameter2, ...])

Valores devueltos

Object

Parámetros

  • ClassName
    Especifica la clase o el objeto OLE a partir del cual se crea el nuevo objeto. Visual FoxPro busca la clase o el objeto OLE en el orden siguiente:

    1. Clases de base de Visual FoxPro.
    2. Clases del programa actual.
    3. Clases de las bibliotecas de clases .vcx abiertas con SET CLASSLIB.
    4. Clases de los archivos de procedimientos abiertos con SET PROCEDURE.
    5. Clases de la cadena de ejecución del programa de Visual FoxPro.
    6. El registro de OLE si SET OLEOBJECT está establecido en ON.

    Los objetos OLE se crean con la sintaxis siguiente para ClassName:

    ApplicationName.Class
    

    Por ejemplo, para crear una hoja de cálculo de Microsoft Excel (que admite la Automatización), puede utilizar la sintaxis siguiente:

    x = CREATEOBJECT('Excel.Sheet')
    

    Cuando se ejecuta este código, se inicia Microsoft Excel (si no está en funcionamiento) y se crea una hoja de cálculo nueva.

    Una biblioteca de clases puede tener un alias. Para especificar un objeto en una biblioteca de clases con un alias, incluya el alias de la biblioteca de clases seguido de un punto y el nombre del objeto.

    Observe que ClassName no puede ser la clase de base del control OLE Container de Visual FoxPro.

  • eParameter1, eParameter2, ...
    Estos parámetros opcionales sirven para transferir valores al procedimiento de evento Init de la clase. El evento Init se ejecuta después que CREATEOBJECT( ) y permite inicializar el objeto.

Observaciones

Utilice CREATEOBJECT( ) para crear un objeto a partir de una definición de clase o una aplicación que admita Automatización y asigne al objeto una referencia a una variable de sistema o un elemento de matriz.

Antes de crear un objeto a partir de una clase definida por el usuario, ésta deberá crearse previamente con DEFINE CLASS o deberá estar disponible en una biblioteca de clases visuales .vcx abierta con SET CLASSLIB.

Utilice = o STORE para asignar al objeto una referencia a una variable de sistema o un elemento de matriz. Si se libera un objeto asignado a una variable de sistema o un elemento de matriz, la variable de sistema o el elemento de matriz contendrá el valor nulo. Utilice RELEASE para quitar de la memoria la variable de sistema o el elemento de matriz.

Ejemplo

El ejemplo siguiente usa DEFINE CLASS y CREATEOBJECT( ) para crear dos clases personalizadas llamadas FormChild y FormGrandChild a partir de la clase de base Form de Visual FoxPro. ACLASS( ) se utiliza para crear una matriz llamada gaNewArray que contiene los nombres de clase, que se muestran después.

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

Vea también

_BROWSER | COMCLASSINFO( ) | CREATEOBJECTEX( ) | DEFINE CLASS | GETOBJECT( ) | RELEASE | SET CLASSLIB | SET OLEOBJECT