Share via


Crear una referencia de objeto

En lugar de realizar una copia de un objeto, puede crear una referencia a dicho objeto. Una referencia ocupa menos memoria que un objeto adicional, puede transferirse fácilmente entre procedimientos y puede ayudar a escribir código genérico.

Devolver una referencia a un objeto

En algunas ocasiones puede resultar conveniente manipular un objeto por medio de una o varias referencias al mismo. Por ejemplo, el programa siguiente define una clase, crea un objeto basado en la clase y devuelve una referencia al objeto:

*--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

El programa siguiente establece una referencia al objeto creado en Newinv.prg. La variable de referencia puede manipularse exactamente del mismo modo que la variable de objeto:

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

También puede crear una referencia a un objeto de un formulario, como en el ejemplo siguiente.

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

Sugerencia   Cuando ha creado un objeto, puede usar el comando DISPLAY OBJECTS para mostrar la jerarquía de clases del objeto, los valores de las propiedades, los objetos contenidos y los métodos y eventos disponibles. Puede llenar una matriz con las propiedades (no los valores de las propiedades), eventos, métodos y objetos contenidos de un objeto con la función AMEMBERS( ).

Liberar objetos y referencias de la memoria

Si existe una referencia a un objeto, la liberación del objeto no borra el objeto de la memoria. Por ejemplo, el comando siguiente libera el objeto original, frmInvoice:

RELEASE frmInvoice

Sin embargo, puesto que sigue existiendo una referencia a un objeto perteneciente a frmInvoice, el objeto no se liberará de la memoria hasta que se libere txtCustName con el comando siguiente:

RELEASE txtCustName

Comprobar si existe un objeto

Puede utilizar las funciones TYPE( ), ISNULL( ) y VARTYPE( ) para determinar si existe un objeto. Por ejemplo, las líneas de código siguientes comprueban si existe un objeto llamado oConnection:

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

**Nota   **El comando ISNULL( ) es necesario porque .NULL. se almacena en la variable de objeto de formulario cuando un usuario cierra un formulario, pero el tipo de variable sigue siendo "O".

Vea también

Escribir definiciones de clases mediante programación | Definir un control Grid | Matrices de miembros y objetos | DISPLAY OBJECTS | AMEMBERS( ) | Programación orientada a objetos