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

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:

EventoCodeMétodos objectoMétodo formulárioQue objectos
On Activate11NuncaSimNenhum
On After Edit45SimSimApenas objecto envolvido
On After Keystroke28SimSimApenas objecto envolvido
On After Sort30Sim (List box)NuncaApenas objecto envolvido
On Alternative Click38Sim (botão e List box)NuncaApenas objecto envolvido
On Before Data Entry41Sim (List box)NuncaApenas objecto envolvido
On Before Keystroke17SimSimApenas objecto envolvido
On Begin Drag Over46SimSimApenas objecto envolvido
On Begin URL Loading47Sim (Área Web)NuncaApenas objecto envolvido
On Bound variable change54NuncaSimNenhum
On Clicked4SimSimApenas objecto envolvido
On Close Box22NuncaSimNenhum
On Close Detail26Sim (List box)SimNenhum, excepto List boxes
On Collapse44Sim (Hier. lista e list box)NuncaApenas objecto envolvido
On Column Moved32Sim (List box)NuncaApenas objecto envolvido
On Column Resize33Sim (List box e Area 4D View Pro)NuncaApenas objecto envolvido
On Data Change20SimSimApenas objecto envolvido
On Deactivate12NuncaSimNenhum
On Delete Action58Sim (Hier. lista e list box)NuncaApenas objecto envolvido
On Display Detail8SimSimTodos os objectos
On Double Clicked13SimSimApenas objecto envolvido
On Drag Over21SimNuncaApenas objecto envolvido
On Drop16SimSimApenas objecto envolvido
On End URL Loading49Sim (Área Web)NuncaApenas objecto envolvido
On Expand43Sim (Hier. lista e list box)NuncaApenas objecto envolvido
On Footer Click57Sim (List box)NuncaApenas objecto envolvido
On Getting Focus15SimSimApenas objecto envolvido
On Header5SimSimTodos os objectos
On Header Click42Sim (List box e Area 4D View Pro)NuncaApenas objecto envolvido
On Load1SimSimTodos os objectos
On Load Record40NuncaSimNenhum
On Long Click39Sim (Botão)SimApenas objecto envolvido
On Losing Focus14SimSimApenas objecto envolvido
On Menu Selected18NuncaSimNenhum
On Mouse Enter35SimSimTodos os objectos
On Mouse Leave36SimSimTodos os objectos
On Mouse Move37SimSimTodos os objectos
On Mouse Up2SimNuncaApenas objecto envolvido
On Open Detail25Sim (List box)SimNenhum, excepto List boxes
On Open External Link52Sim (Área Web)NuncaApenas objecto envolvido
On Outside Call10NuncaSimNenhum
On Page Change56NuncaSimNenhum
On Plug in Area19SimSimApenas objecto envolvido
On Printing Break6SimSimTodos os objectos
On Printing Detail23SimSimTodos os objectos
On Printing Footer7SimSimTodos os objectos
On Resize29NuncaSimNenhum
On Row Moved34Sim (List box)NuncaApenas objecto envolvido
On Row Resize60Sim (Área 4D View Pro)NuncaApenas objecto envolvido
On Scroll59SimNuncaApenas objecto envolvido
On Selection Change31SimSimApenas objecto envolvido
On Timer27NuncaSimNenhum
On Unload24SimSimTodos os objectos
On URL Filtering51Sim (Área Web)NuncaApenas objecto envolvido
On URL Loading Error50Sim (Área Web)NuncaApenas objecto envolvido
On URL Resource Loading48Sim (Área Web)NuncaApenas objecto envolvido
On Validate3SimSimTodos os objectos
On VP Range Changed61Sim (Área 4D View Pro)NuncaApenas objecto envolvido
On VP Ready9Sim (Área 4D View Pro)NuncaApenas objecto envolvido
On Window Opening Denied53Sim (Área Web)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. Se os eventos estiverem ativados somente para objetos, eles não ocorrerão; esses dois eventos também devem ser ativados no nível do formulário.