Saltar al contenido principal
Versión: 19

Generalidades

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
objectNametextName of the object triggering the event - Not included if the event is triggered by the form

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.

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 evento está seleccionada. 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 LoadSíSíTodos los objetos
On UnloadSíSíTodos los objetos
On ValidateSíSíTodos los objetos
On ClickedSíSíObjetos involucrados únicamente
On Double ClickedSíSíObjetos involucrados únicamente
On Before KeystrokeSíSíObjetos involucrados únicamente
On After KeystrokeSíSíObjetos involucrados únicamente
On After EditSíSíObjetos involucrados únicamente
On Getting FocusSíSíObjetos involucrados únicamente
On Losing FocusSíSíObjetos involucrados únicamente
On ActivateNuncaSíNinguno
On DeactivateNuncaSíNinguno
On Outside CallNuncaSíNinguno
On Page ChangeNuncaSíNinguno
On Begin Drag OverSíSíObjetos involucrados únicamente
On DropSíSíObjetos involucrados únicamente
On Drag OverSíNuncaObjetos involucrados únicamente
On Mouse EnterSíSíTodos los objetos
On Mouse MoveSíSíTodos los objetos
On Mouse LeaveSíSíTodos los objetos
On Mouse UpSíNuncaObjetos involucrados únicamente
On Menu SelectedNuncaSíNinguno
On Bound variable changeNuncaSíNinguno
On Data ChangeSíSíObjetos involucrados únicamente
On Plug in AreaSíSíObjetos involucrados únicamente
On HeaderSíSíTodos los objetos
On Printing DetailSíSíTodos los objetos
On Printing BreakSíSíTodos los objetos
On Printing FooterSíSíTodos los objetos
On Close BoxNuncaSíNinguno
On Display DetailSíSíTodos los objetos
On Open DetailSí (List box)SíNinguna, excepto los list box
On Close DetailSí (List box)SíNinguna, excepto los list box
On ResizeNuncaSíNinguno
On Selection ChangeSíSíObjetos involucrados únicamente
On Load RecordNuncaSíNinguno
On TimerNuncaSíNinguno
On ScrollSíNuncaObjetos 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)Sí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.

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. 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.