Saltar al contenido principal
Versión: 21

Eventos formulario

Los eventos formulario son eventos que pueden llevar a la ejecución del método de formulario y/o del o de los métodos objeto de formulario. Los eventos de formulario le permiten controlar el flujo de su aplicación y escribir código que se ejecuta sólo cuando ocurre un evento específico.

En su código, usted controla los eventos utilizando el comando FORM Event, que devuelve el evento accionado. Por ejemplo:

//code of a button
If(FORM Event.code=On Clicked)
// hacer algo cuando se presiona el botón
End if

Cada formulario y cada objeto activo en el formulario puede escuchar un conjunto predefinido de eventos, pero sólo los eventos que habilitó a nivel del formulario y/o en cada nivel del objeto ocurrirán realmente.

Objeto evento

Cada evento es devuelto como un objeto por el comando FORM Event. Por defecto, contiene las siguientes propiedades:

PropiedadTipoDescripción
objectNametextNombre del objeto que desencadena el evento - No se incluye si el evento lo desencadena el formulario
codeentero largoValor numérico del evento de formulario. También devuelto por el comando Form event code
descriptiontextNombre del evento de formulario (por ejemplo, "On After Edit")

Se devuelven propiedades adicionales cuando el evento se produce en objetos específicos. En particular:

Eventos y métodos

Cuando se produce un evento formulario, 4D realiza las siguientes acciones:

  • En primer lugar, explora los objetos del formulario y llama al método objeto para todo objeto (asociado al evento) cuya propiedad de evento de objeto correspondiente haya sido seleccionada.
  • Luego, llama al método formulario si la propiedad del evento formulario correspondiente ha sido seleccionada.

No asuma que los métodos objeto, si los hay, serán llamados en un orden particular. La regla general es que los métodos objeto siempre se llaman antes que el método formulario. Si un objeto es un subformulario, se llaman los métodos objeto del formulario lista del subformulario, y luego se llama al método formulario del formulario listado. 4D continúa llamando a los métodos objeto del formulario padre. En otras palabras, cuando un objeto es un subformulario, 4D utiliza la misma regla general para los métodos objeto y formulario dentro del objeto subformulario.

ATENCIÓN: los eventos On Load y On Unload se generan para los objetos si están activados a la vez para los objetos y para el formulario al que pertenecen los objetos. En otras palabras, la activación o desactivación de un evento a nivel de formulario no tiene ningún efecto sobre las propiedades del evento del objeto.

El número de objetos asociados a un evento depende de la naturaleza del mismo.

Tabla de llamadas

El número de objetos asociados a un evento depende de la naturaleza del mismo.

EventoCodeMétodo objetoMétodo formularioObjetos
On Activate11NuncaNinguno
On After Edit45Objetos involucrados únicamente
On After Keystroke28Objetos involucrados únicamente
On After Sort30Sí (List box)NuncaObjetos involucrados únicamente
On Alternative Click38Sí (Botón y List box)NuncaObjetos involucrados únicamente
On Before Data Entry41Sí (List box)NuncaObjetos involucrados únicamente
On Before Keystroke17Objetos involucrados únicamente
On Begin Drag Over46Objetos involucrados únicamente
On Begin URL Loading47Sí (Área Web)NuncaObjetos involucrados únicamente
On Bound variable change54NuncaNinguno
On Clicked4Objetos involucrados únicamente
On Close Box22NuncaNinguno
On Close Detail26Sí (List box)Ninguna, excepto los list box
On Collapse44Sí (Lista jerarq. y list box)NuncaObjetos involucrados únicamente
On Column Moved32Sí (List box)NuncaObjetos involucrados únicamente
On Column Resize33Sí (List box y Área 4D View Pro)NuncaObjetos involucrados únicamente
On Data Change20Objetos involucrados únicamente
On Deactivate12NuncaNinguno
On Delete Action58Sí (Lista jerarq. y list box)NuncaObjetos involucrados únicamente
On Display Detail8Todos los objetos
On Double Clicked13Objetos involucrados únicamente
On Drag Over21NuncaObjetos involucrados únicamente
On Drop16Objetos involucrados únicamente
On End URL Loading49Sí (Área Web)NuncaObjetos involucrados únicamente
On Expand43Sí (Lista jerarq. y list box)NuncaObjetos involucrados únicamente
On Footer Click57Sí (List box)NuncaObjetos involucrados únicamente
On Getting Focus15Objetos involucrados únicamente
On Header5Todos los objetos
On Header Click42Sí (List box y Área 4D View Pro)NuncaObjetos involucrados únicamente
On Load1Todos los objetos
On Load Record40NuncaNinguno
On Long Click39Sí (botón)Objetos involucrados únicamente
On Losing Focus14Objetos involucrados únicamente
On Menu Selected18NuncaNinguno
On Mouse Enter35Todos los objetos
On Mouse Leave36Todos los objetos
On Mouse Move37Todos los objetos
On Mouse Up2NuncaObjetos involucrados únicamente
On Open Detail25Sí (List box)Ninguna, excepto los list box
On Open External Link52Sí (Área Web)NuncaObjetos involucrados únicamente
On Outside Call10NuncaNinguno
On Page Change56NuncaNinguno
On Plug in Area19Objetos involucrados únicamente
On Printing Break6Todos los objetos
On Printing Detail23Todos los objetos
On Printing Footer7Todos los objetos
On Resize29NuncaNinguno
On Row Moved34Sí (List box)NuncaObjetos involucrados únicamente
On Row Resize60Sí (Área 4D View Pro)NuncaObjetos involucrados únicamente
On Scroll59NuncaObjetos involucrados únicamente
On Selection Change31Objetos involucrados únicamente
On Timer27NuncaNinguno
On Unload24Todos los objetos
On URL Filtering51Sí (Área Web)NuncaObjetos involucrados únicamente
On URL Loading Error50Sí (Área Web)NuncaObjetos involucrados únicamente
On URL Resource Loading48Sí (Área Web)NuncaObjetos involucrados únicamente
On Validate3Todos los objetos
On VP Range Changed61Sí (Área 4D View Pro)NuncaObjetos involucrados únicamente
On VP Ready9Sí (Área 4D View Pro)NuncaObjetos involucrados únicamente
On Window Opening Denied53Sí (Área Web)NuncaObjetos involucrados únicamente

Tenga siempre en cuenta que, para todo evento, se llama al método de un formulario o de un objeto si se selecciona la correspondiente propiedad del evento para el formulario o los objetos. La ventaja de desactivar los eventos en el entorno de diseño (utilizando la lista de propiedades del editor de formularios) es que puede reducir el número de llamadas a los métodos y, por tanto, optimizar significativamente la velocidad de ejecución de sus formularios.

Excepto en los eventos En carga y En descarga (ver más abajo), si la propiedad del evento formulario no está seleccionada para un evento determinado, esto no impide las llamadas a los métodos objetos cuya misma propiedad de eve En otras palabras, la activación o desactivación de un evento a nivel de formulario no tiene ningún efecto sobre las propiedades del evento del objeto. Si los eventos están activados sólo para los objetos, no se producirán; estos dos eventos también deben estar activados a nivel del formulario.