Métodos Access y Assign

Se ha mejorado Microsoft® Visual FoxPro® para que admita los métodos Access y Assign. Estos métodos definidos por el usuario permiten ejecutar código cuando se consulta el valor de una propiedad o cuando se intenta modificar el valor de una propiedad.

El código de un método Access se ejecuta cuando se consulta el valor de una propiedad, generalmente al utilizar la propiedad en una referencia de objeto, al almacenar el valor de una propiedad en una variable o al mostrar el valor de la propiedad con un signo de interrogación (?).

El código de un método Assign se ejecuta cuando intenta modificar el valor de una propiedad, generalmente mediante los comandos STORE o = para asignar un nuevo valor a la propiedad.

Los métodos Access y Assign sólo se ejecutan cuando se consultan o modifican los valores de las propiedades en tiempo de ejecución. La consulta o modificación de los valores de las propiedades en tiempo de diseño no hace que se ejecuten los métodos Access y Assign.

Nota   Como el valor que intenta asignar a la propiedad se pasa al método Assign, debe incluir una instrucción PARAMETERS o LPARAMETERS en el método Assign para aceptar el valor.

Puede crear independientemente los métodos Access y Assign (puede crear un método Access sin un método Assign o un método Assign sin un método Access).

Puede crear métodos Access y Assign para propiedades creadas mediante programación en una instrucción DEFINE CLASS o de forma interactiva para un formulario o una clase con el Diseñador de formularios y el Diseñador de clases. Métodos Access y Assign

Nota   También se pueden crear métodos Access y Assign para todas las propiedades nativas de Visual FoxPro. Por ejemplo, puede crear un método Access para la propiedad Left de un formulario, lo que le permitirá ejecutar código siempre que se consulte la propiedad Left del formulario. Puede crear un método Assign para una propiedad nativa de sólo lectura de Visual FoxPro (por ejemplo, la propiedad ParentClass), pero el método nunca se ejecutará.

Ventajas de los métodos Access y Assign

Los métodos Access y Assign proporcionan las ventajas siguientes:

  • Puede crear una interfaz pública para una clase o un objeto que separe la interfaz de la implementación.
  • Puede implementar fácilmente la validación de las propiedades.
  • Puede proteger fácilmente las propiedades en controles ActiveX que derivan de clases.

Método THIS_ACCESS

Se ha agregado a Visual FoxPro un nuevo método global de clase, THIS_ACCESS. El código de un método THIS_ACCESS se ejecuta siempre que se intente modificar el valor de un miembro de un objeto o siempre que se intente consultar un miembro de un objeto.

El método THIS_ACCESS se crea en el código en un comando DEFINE CLASS o en los cuadros de diálogo Nuevo método o Modificar propiedades de las bibliotecas de clases visuales .vcx. Un método THIS_ACCESS siempre debe devolver una referencia de objeto; si no es así, se generará un error. Normalmente se devuelve la referencia de objeto THIS. El método THIS_ACCESS también debe incluir un parámetro para aceptar el nombre del miembro del objeto que se modifica o consulta.

El siguiente ejemplo muestra cómo crear un método THIS_ACCESS en el código de un comando DEFINE CLASS. Cuando este ejemplo se ejecuta como programa, 'Caption' se muestra dos veces, la primera cuando se le asigna un valor a la propiedad Caption y la segunda cuando se consulta el valor de la propiedad Caption. Después se muestra el valor de la propiedad Caption ('abc').

CLEAR
oTempObj = CREATEOBJECT('MyForm')  && Instantiate the Form
oTempObj.Caption = 'abc'  && Assign a value, triggers THIS_ACCESS
? oTempObj.Caption  && Query a value, triggers THIS_ACCESS

DEFINE CLASS MyForm AS Form
 PROCEDURE THIS_ACCESS
 LPARAMETER cMemberName  && Object member name

 IF cMemberName = 'caption'
 ? cMemberName  && Display the object member name
 ENDIF
 RETURN THIS
 ENDPROC
ENDDEFINE

Observe que THIS_ACCESS no pretende ser un sustituto global de los métodos Access y Assign (sólo proporciona información acerca del miembro del objeto al que se tiene acceso o se consulta). A diferencia de los métodos Access y Assign, THIS_ACCESS no proporciona control sobre los valores devueltos a miembros de objeto específicos.

Vea también

Programación orientada a objetos | Clases de Visual FoxPro | Llamar a métodos | Crear métodos Access y Assign