Saltar al contenido principal
Versión: 20 R6

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, se controlan los eventos mediante el comando FORM Event, que devuelve el evento disparado. 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.

EventoMétodo objetoMétodo formularioObjetos
On LoadTodos los objetos
On UnloadTodos los objetos
On ValidateTodos los objetos
On ClickedObjetos involucrados únicamente
On Double ClickedObjetos involucrados únicamente
On Before KeystrokeObjetos involucrados únicamente
On After KeystrokeObjetos involucrados únicamente
On After EditObjetos involucrados únicamente
On Getting FocusObjetos involucrados únicamente
On Losing FocusObjetos involucrados únicamente
On ActivateNuncaNinguno
On DeactivateNuncaNinguno
On Outside CallNuncaNinguno
On Page ChangeNuncaNinguno
On Begin Drag OverObjetos involucrados únicamente
On DropObjetos involucrados únicamente
On Drag OverNuncaObjetos involucrados únicamente
On Mouse EnterTodos los objetos
On Mouse MoveTodos los objetos
On Mouse LeaveTodos los objetos
On Mouse UpNuncaObjetos involucrados únicamente
On Menu SelectedNuncaNinguno
On Bound variable changeNuncaNinguno
On Data ChangeObjetos involucrados únicamente
On Plug in AreaObjetos involucrados únicamente
On HeaderTodos los objetos
On Printing DetailTodos los objetos
On Printing BreakTodos los objetos
On Printing FooterTodos los objetos
On Close BoxNuncaNinguno
On Display DetailTodos los objetos
On Open DetailSí (List box)Ninguna, excepto los list box
On Close DetailSí (List box)Ninguna, excepto los list box
On ResizeNuncaNinguno
On Selection ChangeObjetos involucrados únicamente
On Load RecordNuncaNinguno
On TimerNuncaNinguno
On ScrollNuncaObjetos involucrados únicamente
On Before Data EntrySí (List box)NuncaObjetos involucrados únicamente
On Column MovedSí (List box)NuncaObjetos involucrados únicamente
On Row MovedSí (List box)NuncaObjetos involucrados únicamente
On Column ResizeSí (List box y Área 4D View Pro)NuncaObjetos involucrados únicamente
On Header ClickSí (List box y Área 4D View Pro)NuncaObjetos involucrados únicamente
On Footer ClickSí (List box)NuncaObjetos involucrados únicamente
On After SortSí (List box)NuncaObjetos involucrados únicamente
On Long ClickSí (botón)Objetos involucrados únicamente
On Alternative ClickSí (Botón y List box)NuncaObjetos involucrados únicamente
On ExpandSí (Lista jerarq. y list box)NuncaObjetos involucrados únicamente
On CollapseSí (Lista jerarq. y list box)NuncaObjetos involucrados únicamente
On Delete ActionSí (Lista jerarq. y list box)NuncaObjetos involucrados únicamente
On URL Resource LoadingSí (Área Web)NuncaObjetos involucrados únicamente
On Begin URL LoadingSí (Área Web)NuncaObjetos involucrados únicamente
On URL Loading ErrorSí (Área Web)NuncaObjetos involucrados únicamente
On URL FilteringSí (Área Web)NuncaObjetos involucrados únicamente
On End URL LoadingSí (Área Web)NuncaObjetos involucrados únicamente
On Open External LinkSí (Área Web)NuncaObjetos involucrados únicamente
On Window Opening DeniedSí (Área Web)NuncaObjetos involucrados únicamente
On VP Range ChangedSí (Área 4D View Pro)NuncaObjetos involucrados únicamente
On VP ReadySí (Área 4D View Pro)NuncaObjetos involucrados únicamente
On Row ResizeSí (Área 4D View Pro)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.