Share via


Directrices para el código de métodos y eventos

Además de escribir código para los métodos y eventos de un objeto, puede ampliar el conjunto de métodos en las subclases de clases de base de Visual FoxPro. Estas son las reglas para escribir código de evento y métodos:

  • El conjunto de eventos para las clases de base de Visual FoxPro es limitado y no puede ampliarse.
  • Todas las clases reconocen un conjunto limitado de eventos predeterminados, que incluye como mínimo los eventos Init, Destroy y Error.
  • Al crear en una definición de clase un método con el mismo nombre que un evento reconocible por la clase, el código del método se ejecutará cuando se produzca el evento.
  • Puede agregar métodos a las clases mediante la creación de un procedimiento o una función en la definición de clase.
  • Puede crear métodos Access y Assign para sus clases si crea un procedimiento o una función con el mismo nombre que una propiedad de clase y anexa _ACCESS o _ASSIGN al nombre de procedimiento o de función.

Llamar al código de evento en la jerarquía de clases

Al crear una clase, ésta hereda automáticamente todas las propiedades, los métodos y los eventos de la clase primaria. Si se escribe código para un evento en la clase primaria, ese código se ejecutará cuando se produzca el evento con respecto a un objeto basado en la subclase. Sin embargo, podrá sobrescribir el código de la clase primaria escribiendo código para el evento en la subclase.

Para llamar explícitamente al código de evento en una clase primaria cuando la subclase tiene código escrito para el mismo evento, utilice la función DODEFAULT( ).

Por ejemplo, podría tener una clase llamada cmdBottom basada en la clase de base del botón de comando que tuviera el código siguiente en el evento Click:

GO BOTTOM
THISFORM.Refresh

Al agregar un objeto basado en esta clase a un formulario llamado, por ejemplo, cmdBottom1, puede decidir que también desea mostrar un mensaje para informar al usuario de que el puntero de registro está en la parte inferior de la tabla. Podría agregar el código siguiente al evento Click del objeto para mostrar el mensaje:

WAIT WINDOW "At the Bottom of the Table" TIMEOUT 1

Sin embargo, al ejecutar el formulario se muestra el mensaje, pero el puntero de registro no se mueve porque nunca se ejecuta el código del evento Click de la clase primaria. Para asegurarse de que también se ejecuta el código del evento Click de la clase primaria, incluya las siguientes líneas de código en el procedimiento del evento Click del objeto:

DODEFAULT( )
WAIT WINDOW "At the Bottom of the Table" TIMEOUT 1

Nota   Puede utilizar la función ACLASS( ) para determinar todas las clases de la jerarquía de clases de un objeto.

Impedir la ejecución del código de clase de base

En algunos casos, deseará evitar que se produzca el comportamiento predeterminado de la clase de base en un evento o método. Para ello, incluya la palabra clave NODEFAULT en el código de método que escriba. Por ejemplo, el programa siguiente utiliza la palabra clave NODEFAULT en el evento KeyPress de un cuadro de texto para impedir que se muestren en el cuadro los caracteres escritos:

frmKeyExample = CREATEOBJECT("test")
frmKeyExample.Show
READ EVENTS
DEFINE CLASS test AS FORM
  ADD OBJECT text1 AS TEXTBOX
  PROCEDURE text1.KeyPress
   PARAMETERS nKeyCode, nShiftAltCtrl
   NODEFAULT
   IF BETWEEN(nKeyCode, 65, 122) && between 'A' and 'z'
    This.Value = ALLTRIM(This.Value) + "*"
    ACTIVATE SCREEN      && send output to main Visual FoxPro window
    ?? CHR(nKeyCode)
   ENDIF
  ENDPROC
  PROCEDURE Destroy
   CLEAR EVENTS
  ENDPROC
ENDDEFINE

Vea también

Escribir definiciones de clases mediante programación | Agregar objetos a una clase contenedora | Crear un conjunto de botones de desplazamiento por tablas | Init | Destroy | Error | Métodos Access y Assign | Programación orientada a objetos