Saltar para o conteúdo principal
Versão: 20

Eventos formulário

Eventos de formulário são eventos que podem levar à execução do método de formulário e/ou método(s) de objeto de formulário. Os eventos de formulário permitem que você controle o fluxo do aplicativo e escreva códigos que são executados somente quando ocorre um evento específico.

Em seu código, você controla os eventos usando o comando FORM Event, que retorna o evento acionado. Por exemplo:

//código de um botão
If(FORM Event.code=On Clicked)
// faça algo quando o botão for clicado
End if

Cada formulário e cada objeto ativo no formulário podem ouvir um conjunto predefinido de eventos, mas somente os eventos que você ativou no nível do formulário e/ou em cada nível de objeto ocorrerão de fato.

Objecto evento

Cada evento é retornado como um objeto pelo comando FORM Event. Por padrão, ele contém as seguintes propriedades:

PropriedadeTipoDescrição
objectNametextNome do objeto que aciona o evento - Não incluído se o evento for acionado pelo formulário

Form event code| |description|text|Nome do evento do formulário (por exemplo, "On After Edit")|.

Propriedades adicionais são retornadas quando o evento ocorre em objetos específicos. Em particular:

Eventos e métodos

Quando um evento formulário ocorre, 4D executa as seguintes ações:

  • Primeiro, ele pesquisa os objetos do formulário e chama o método de objeto para qualquer objeto (envolvido no evento) cuja propriedade de evento de objeto correspondente tenha sido selecionada.
  • Em segundo lugar, ele chama o método de formulário se a propriedade de evento de formulário correspondente tiver sido selecionada.

Não presuma que os métodos do objeto, se houver, serão chamados em uma ordem específica. A regra geral é que os métodos de objeto sejam sempre chamados antes do método de formulário. Se um objeto for um subformulário, os métodos de objeto do formulário de lista do subformulário serão chamados e, em seguida, o método de formulário do formulário de lista será chamado. 4D então continua a chamar os métodos objeto do formulário pai. Em outras palavras, quando um objeto é um subformulário, 4D usa a mesma regra prática para o objeto e os métodos do formulário dentro do objeto do subformulário.

Com exceção dos eventos On Load e On Unload (veja abaixo), se a propriedade de evento de formulário não estiver selecionada para um determinado evento, isso não impedirá chamadas a métodos de objeto para os objetos cuja mesma propriedade de evento esteja selecionada. Em outras palavras, ativar ou desativar um evento no nível do formulário não tem efeito sobre as propriedades do evento do objeto.

O número de objetos envolvidos em um evento depende da natureza do evento.

Tabela de chamadas

A tabela seguinte resume a forma como os métodos objeto e formulário são chamados para cada tipo de evento:

EventoMétodos objectoMétodo formulárioQue objectos
On LoadSimSimTodos os objectos
On UnloadSimSimTodos os objectos
On ValidateSimSimTodos os objectos
On ClickedSimSimApenas objecto envolvido
On Double ClickedSimSimApenas objecto envolvido
On Before KeystrokeSimSimApenas objecto envolvido
On After KeystrokeSimSimApenas objecto envolvido
On After EditSimSimApenas objecto envolvido
On Getting FocusSimSimApenas objecto envolvido
On Losing FocusSimSimApenas objecto envolvido
On ActivateNuncaSimNenhum
On DeactivateNuncaSimNenhum
On Outside CallNuncaSimNenhum
On Page ChangeNuncaSimNenhum
On Begin Drag OverSimSimApenas objecto envolvido
On DropSimSimApenas objecto envolvido
On Drag OverSimNuncaApenas objecto envolvido
On Mouse EnterSimSimTodos os objectos
On Mouse MoveSimSimTodos os objectos
On Mouse LeaveSimSimTodos os objectos
On Mouse UpSimNuncaApenas objecto envolvido
On Menu SelectedNuncaSimNenhum
On Bound variable changeNuncaSimNenhum
On Data ChangeSimSimApenas objecto envolvido
On Plug in AreaSimSimApenas objecto envolvido
On HeaderSimSimTodos os objectos
On Printing DetailSimSimTodos os objectos
On Printing BreakSimSimTodos os objectos
On Printing FooterSimSimTodos os objectos
On Close BoxNuncaSimNenhum
On Display DetailSimSimTodos os objectos
On Open DetailSim (List box)SimNenhum, excepto List boxes
On Close DetailSim (List box)SimNenhum, excepto List boxes
On ResizeNuncaSimNenhum
On Selection ChangeSimSimApenas objecto envolvido
On Load RecordNuncaSimNenhum
On TimerNuncaSimNenhum
On ScrollSimNuncaApenas objecto envolvido
On Before Data EntrySim (List box)NuncaApenas objecto envolvido
On Column MovedSim (List box)NuncaApenas objecto envolvido
On Row MovedSim (List box)NuncaApenas objecto envolvido
On Column ResizeSim (List box e Area 4D View Pro)NuncaApenas objecto envolvido
On Header ClickSim (List box e Area 4D View Pro)NuncaApenas objecto envolvido
On Footer ClickSim (List box)NuncaApenas objecto envolvido
On After SortSim (List box)NuncaApenas objecto envolvido
On Long ClickSim (Botão)SimApenas objecto envolvido
On Alternative ClickSim (botão e List box)NuncaApenas objecto envolvido
On ExpandSim (Hier. lista e list box)NuncaApenas objecto envolvido
On CollapseSim (Hier. lista e list box)NuncaApenas objecto envolvido
On Delete ActionSim (Hier. lista e list box)NuncaApenas objecto envolvido
On URL Resource LoadingSim (Área Web)NuncaApenas objecto envolvido
On Begin URL LoadingSim (Área Web)NuncaApenas objecto envolvido
On URL Loading ErrorSim (Área Web)NuncaApenas objecto envolvido
On URL FilteringSim (Área Web)NuncaApenas objecto envolvido
On End URL LoadingSim (Área Web)NuncaApenas objecto envolvido
On Open External LinkSim (Área Web)NuncaApenas objecto envolvido
On Window Opening DeniedSim (Área Web)NuncaApenas objecto envolvido
On VP Range ChangedSim (Área 4D View Pro)NuncaApenas objecto envolvido
On VP ReadySim (Área 4D View Pro)NuncaApenas objecto envolvido
On Row ResizeSim (Área 4D View Pro)NuncaApenas objecto envolvido

Lembre-se sempre de que, para qualquer evento, o método de um formulário ou de um objeto é chamado se a propriedade de evento correspondente estiver selecionada para o formulário ou para os objetos. A vantagem de desativar os eventos no ambiente Design (usando a Lista de propriedades do editor de formulários) é que você pode reduzir o número de chamadas para métodos e, portanto, otimizar significativamente a velocidade de execução dos formulários.

AVISO: Os eventos On Load e On Unload são gerados para objetos se estiverem ativados tanto para os objetos quanto para o formulário ao qual os objetos pertencem. If the events are enabled for objects only, they will not occur; these two events must also be enabled at the form level.