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