4D v12.4Form event |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v12.4
Form event
|
Form event -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
Resultado | Inteiro longo |
![]() |
Número do evento do formulário | |||||
Form event devolve um valor numérico que identifica o tipo de evento de formulário que acaba de acontecer. Geralmente, Form event se utiliza em um método de formulário ou num método de objeto.
4D oferece constantes predefinidas (localizadas no tema Eventos de formulários) para comparar os valores devolvidos pelo comando Form event.
Certos eventos são genéricos (gerados por todo tipo de objeto) e outros são específicos a um tipo de objeto particular.
Constante | Tipo | Valor | Comentário |
On Load | Inteiro longo | 1 | O formulário está prestes a ser exibido ou impresso |
On Validate | Inteiro longo | 3 | A entrada de dados foi validada |
On Clicked | Inteiro longo | 4 | Ocorre um clique sobre um objeto |
On Header | Inteiro longo | 5 | O cabeçalho do formulário está prestes a ser impresso ou exibido |
On Printing Break | Inteiro longo | 6 | Uma das áreas de quebra do formulário está prestes a ser impressa |
On Printing Footer | Inteiro longo | 7 | A área do rodapé do formulário está prestes a ser impressa |
On Display Detail | Inteiro longo | 8 | Um registro está prestes a ser mostrado na lista |
On Outside Call | Inteiro longo | 10 | O formulário recebe um chamado CALL PROCESS |
On Activate | Inteiro longo | 11 | A janela de formulário vira a janela atual. |
On Deactivate | Inteiro longo | 12 | A janela do formulário deixa de ser a janela atual |
On Double Clicked | Inteiro longo | 13 | Ocorreu clique duas vezes num objeto |
On Losing Focus | Inteiro longo | 14 | Um objeto do formulário está perdendo o foco |
On Getting Focus | Inteiro longo | 15 | Um objeto do formulário tem o foco |
On Drop | Inteiro longo | 16 | Os dados foram liberados no objeto |
On Before Keystroke | Inteiro longo | 17 | Um caractere está prestes a entrar no objeto que tem o foco. Get edited text retorna o texto de objeto sem o caractere. |
On Menu Selected | Inteiro longo | 18 | Um comando do menu foi selecionado |
On Plug in Area | Inteiro longo | 19 | Um objeto externo solicitou que fosse executado o seu método de objeto |
On Data Change | Inteiro longo | 20 | Os dados do objeto foram modificados |
On Drag Over | Inteiro longo | 21 | Os dados podem ser liberados num objeto |
On Close Box | Inteiro longo | 22 | Um clique ocorreu na caixa de fechar a janela. |
On Printing Detail | Inteiro longo | 23 | A área de detalhe do formulário está prestes a ser impressa |
On Unload | Inteiro longo | 24 | O formulário está prestes a ser fechado e liberado |
On Open Detail | Inteiro longo | 25 | Um registro é clicado duas vezes e você passa ao formulário de entrada |
On Close Detail | Inteiro longo | 26 | O formulário de entrada é fechado e regressa ao formulário de saída |
On Timer | Inteiro longo | 27 | O número de tiques definido pelo comando Get edited text passou |
On After Keystroke | Inteiro longo | 28 | Um caractere que vai ser inserido no objeto que tem o foco. SET TIMER retorna o texto do objeto, incluindo esse caractere |
On Resize | Inteiro longo | 29 | A janela do formulário é redimensionada |
On After Sort | Inteiro longo | 30 | (List box only) Uma ordenação padrão foi realizada em uma list box coluna |
On Selection Change | Inteiro longo | 31 | List box: é modificada a seleção atual de linhas ou colunas Registros na lista: é modificado o registro atual ou a seleção atual de linhas num formulário listado ou num subformulário Lista hierarquica: a seleção na lista é modificada após fazer clique ou pressionar uma tecla Variável ou campo editável (somente v12.x): a seleção de texto ou a posição do ponteiro na área é modificada ao clicar ou pressionar uma tecla. |
On Column Moved | Inteiro longo | 32 | (List box apenas) O usuário move uma coluna de list box com arrastar e soltar. |
On Column Resize | Inteiro longo | 33 | (List box apenas) Se modificar a largura de uma coluna de list box |
On Row Moved | Inteiro longo | 34 | (Somente List Box) O usuário move uma fileira de uma list box usando arrastar e soltar |
On Mouse Enter | Inteiro longo | 35 | O ponteiro do mouse ingressa à área gráfica de um objeto |
On Mouse Leave | Inteiro longo | 36 | O ponteiro do mouse sai da área gráfica de um objeto |
On Mouse Move | Inteiro longo | 37 | O ponteiro do mouse se move (pelo menos um pixel) na área gráfica de um objeto |
On Arrow Click | Inteiro longo | 38 | (3D buttons only) A área “flecha” do botão 3D é clicado. |
On Long Click | Inteiro longo | 39 | (Somente botões 3D) Um botão 3D é clicado e o botão do mouse permanece pressionado por um instante |
On Load Record | Inteiro longo | 40 | No modo de entrada em lista, enquanto é modificado, um registro é carregado (o usuário clica numa linha do registro e um campo passa ao modo de edição) |
On Before Data Entry | Inteiro longo | 41 | (List box only) Uma célula de list box está prestes a mudar para modo editar |
On Header Click | Inteiro longo | 42 | (Somente list box) Ocorre um clique num cabeçalho de coluna do list box |
On Expand | Inteiro longo | 43 | (Somente listas hierarquicas ) Um elemento da lista hierarquica foi expandido fazendo clique ou utilizando uma tecla |
On Collapse | Inteiro longo | 44 | (Listas hierárquicas apenas) Um elemento da lista hierárquica foi contraído através de um clique ou uma tecla. |
On After Edit | Inteiro longo | 45 | Os conteúdos do objeto editável que tem o foco foram modificados. |
On Begin Drag Over | Inteiro longo | 46 | Um objeto está sendo arrastado |
On Begin URL Loading | Inteiro longo | 47 | (apenas Web areas) Uma nova área URL é carrega na área WEb |
On URL Resource Loading | Inteiro longo | 48 | (Somente áreas web) Um novo recurso é carregado na área web |
On End URL Loading | Inteiro longo | 49 | (Somente áreas web) Todos os recursos da URL foram carregados |
On URL Loading Error | Inteiro longo | 50 | (Somente áreas web) Ocorreu um erro quando a URL estava sendo carregada |
On URL Filtering | Inteiro longo | 51 | (Somente áreas web) Uma URL foi bloqueada pela área web |
On Open External Link | Inteiro longo | 52 | (Somente áreas web) Foi aberta uma URL externa no navegador |
On Window Opening Denied | Inteiro longo | 53 | Uma janela pop-up foi bloqueada |
On bound variable change | Inteiro longo | 54 | A variável relacionada a um subformulário é modificada. |
On Mac toolbar button | Inteiro longo | 55 | O usuário clica no botão de gestão da barra de ferramentas no Mac OS. |
Observação: os eventos específicos de formulários de saída não podem ser utilizados em formulários projeto. Estes são: On Display Detail, On Open Detail, On Close Detail, On Load Record, On Header, On Printing Detail, On Printing Break, On Printing Footer.
Quando passa um evento de formulário, 4D efetua as seguintes ações:
Não assuma que os métodos de objeto, se houver algum, chama-se em uma ordem específica. A regra é que os métodos de objeto sempre se chamam antes que os métodos de formulário. Se um objeto é um sub-formulário, denomina-se, em primeiro lugar, para formar os métodos do objeto sub-formulário saída e, em seguida, o método de saída de forma de formulário. 4D, em seguida, continua chamando os métodos do formulário pai. Em outras palavras, quando um objeto está em um sub¬-formulário 4D utiliza a mesma regra para os métodos de objeto e a forma em sub-formulários.
Exceto para os eventos On Load e On Unload, se a propriedade de evento de formulário não está selecionada para um evento dado, isto não evita as chamadas aos métodos de objeto para os objetos cuja propriedade de evento está selecionada. Ou seja, a ativação ou desativação de um evento a nível do formulário não tem efeito nas propriedades do evento dos objetos.
O número de objetos envolvidos num evento depende da natureza do evento:
Advertência: a diferença dos outros eventos, durante um evento On Begin Drag over, o método chamado é executado no contexto do processo de arrastar e soltar do objeto fonte, não no processo de arrastar e soltar o objeto de destino. Para maior informação, consulte a seção .
Para cada objeto na área de cabeçalho: |
|
Para cada registro:
|
A seguinte tabela resume como se chamam os métodos de formulário e objetos para cada tipo de evento:
Evento | Métodos de objeto | Método de formulário | Que objetos |
On Load | Sim | Sim | Todos |
On Unload | Sim | Sim | Todos |
On Validate | Sim | Sim | Todos |
On Clicked | Sim (se selecionável ) (*) | Sim | Somente o objeto implicado |
On Double Clicked | Sim (se clicável) (*) | Sim | Somente o objeto implicado |
On Before Keystroke | Sim (se editável) (*) | Sim | Somente o objeto implicado |
On After Keystroke | Sim (se editável) (*) | Sim | Somente o objeto implicado |
On After Edit | Sim (se editável) (*) | Sim | Somente o objeto implicado |
On Getting Focus | Sim (se tabelável) (*) | Sim | Somente o objeto implicado |
On Losing Focus | Sim (se tabelável) (*) | Sim | Somente o objeto implicado |
On Activate | Nunca | Sim | Nenhum |
On Deactivate | Nunca | Sim | Nenhum |
On Outside Call | Nunca | Sim | Nenhum |
On Begin drag over | Sim (se arrastável) (**) | Sim | Somente o objeto implicado |
On Drop | Sim (se soltável) (**) | Sim | Somente o objeto implicado |
On Drag Over | Sim (se soltável) (**) | Nunca | Somente o objeto implicado |
On Mouse Enter | Sim | Sim | Todos |
On Mouse Move | Sim | Sim | Todos |
On Mouse Leave | Sim | Sim | Todos |
On Menu Selected | Nunca | Sim | Nenhum |
On Mac toolbar button | Nunca | Sim | Nenhum |
On bound variable change | Nunca | Sim | Nenhum |
On Data Change | Sim (se modificável) (*) | Sim | Somente o objeto implicado |
On Plug in Area | Sim | Sim | Somente o objeto implicado |
On Header | Sim | Sim | Todos |
On Printing Detail | Sim | Sim | Todos |
On Printing Break | Sim | Sim | Todos |
On Printing Footer | Sim | Sim | Todos |
On Close Box | Nunca | Sim | Nenhum |
On Display Detail | Sim | Sim | Todos |
On Open Detail | Nunca | Sim | Nenhum |
On Close Detail | Nunca | Sim | Nenhum |
On Resize | Nunca | Sim | Nenhum |
On Selection Change | Sim (***) | Sim | Somente o objeto implicado |
On Load Record | Nunca | Sim | Nenhum |
On Timer | Nunca | Sim | Nenhum |
On Before Data Entry | Sim (List box) | Nunca | Somente o objeto implicado |
On Column Moved | Sim (List box) | Nunca | Somente o objeto implicado |
On Row Moved | Sim (List box) | Nunca | Somente o objeto implicado |
On Column Resize | Sim (List box) | Nunca | Somente o objeto implicado |
On Header Click | Sim (List box) | Nunca | Somente o objeto implicado |
On After Sort | Sim (List box) | Nunca | Somente o objeto implicado |
On Long Click | Sim (Botão 3D) | Sim | Somente o objeto implicado |
On Arrow Click | Sim (Botão 3D) | Sim | Somente o objeto implicado |
On Expand | Sim (Lista hierárq.) | Nunca | Somente o objeto implicado |
On Collapse | Sim (Lista hierárq.) | Nunca | Somente o objeto implicado |
(*) Para maior informação, ver a seção "Eventos, objetos e propriedades" a continuação.
(**) Consulte a seção "" para maior informação.
(***) Somente os objetos de tipo list box, lista hierárquica e sub formulário suportam este evento.
IMPORTANTE: sempre tenha em conta que, para qualquer evento, o método de um formulário o de um objeto se chama se o evento correspondente é selecionado para o formulário ou objeto. O benefício de desativar eventos no mesmo arredor Desenho (utilizando a Lista de propriedades do editor de formulários) e você pode reduzir de maneira importante o número de chamadas a métodos e portanto otimizar de maneira significativa a velocidade de execução de seus formulários.
Advertência: os eventos On Load e On Unload são gerados por objetos se estão ativados para o objeto e o formulário ao qual pertence o objeto. Se os eventos estão ativados para o objeto unicamente, não passarão; estes dois eventos também devem ativar-se ao nível do formulário.
Um método de objeto é chamado se o evento pode realmente ocorrer para o objeto, dependendo de sua natureza e propriedades. A seguinte seção detalha os eventos que você fará uso geralmente para lidar com os diferentes tipos de objetos.
Lembre que a Lista de propriedades do editor de formulários somente mostra os eventos compatíveis com o objeto selecionado ou o formulário.
Os objetos clicáveis são gerenciáveis principalmente com o mouse. São os seguintes:
Os objetos editáveis por teclado são objetos nos quais você introduz dados utilizando o teclado e para os quais pode filtrar os dados de entrada ao menor nível detectando os eventos On After Edit, On Before Keystroke, On After Keystroke e On Selection Change.
Os objetos e tipos de dados editáveis são os seguintes:
Nota: Mesmo sendo objetos “editáveis”, as listas hierárquicas não dirigem os eventos formulário On After Edit, On Before Keystroke e On After Keystroke (Veja também o parágrafo “Listas hierárquicas” a seguir).
Nota: a partir da versão 2004.2 de 4D, o evento On After Keystroke pode geralmente ser substituído pelo evento On After Edit (veja a seguir).
Assim que os eventos On Before Keystroke e On After Keystroke tenham sido selecionados para um objeto, pode detectar e gerenciar as pulsações de teclas no objeto, fazendo uso do comando Form event que retornará On Before Keystroke e depois On After Keystroke (para maior informação, consulte a descrição do comando Get edited text). Estes eventos também são ativados por comandos de linguagem que simulam a ação do usuário, tais como POST KEY.
Lembre que as modificações do usuário que não são realizadas fazendo uso do teclado (colar, arrastar-soltar, etc.) não são tidas em conta. A fim de processar estes eventos, deverá utilizar On After Edit.
Nota: os eventos On Before Keystroke e On After Keystroke não são gerados durante a utilização de um método de entrada. Um método de entrada (ou IME, Input Method Editor) é um programa ou um componente sistema que pode ser utilizado para introduzir caracteres complexos ou símbolos (por exemplo, chineses ou japoneses) utilizando um teclado ocidental.
Os objetos modificáveis tem uma fonte de dados cujos valores podem ser modificados utilizando o mouse ou o teclado; não são considerados verdadeiramente como controles de interface de usuário controlados através do evento On Clicked. Estes objetos são os seguintes:
Estes objetos recebem eventos On Data Change. Quando o evento On Data Change está selecionado para um destes objetos, você pode detectar e gerenciar a mudança dos valores da fonte de dados, utilizando o comando Form event que retornará On Data Change. O evento é gerado assim que a variável associada com o objeto seja atualizada internamente por 4D (geralmente, quando a área de entrada do objeto perde o foco).
Os objetos tabuláveis obtém o foco quando utiliza a tecla Tab para chegar a eles e/ou quando faz clique neles. O objeto que tem o foco recebe os caracteres (digitados no teclado) que não são modificadores de um comando de menu ou de um objeto como um botão.
Todos os objetos são tabuláveis, COM EXCEPÇÃO dos seguintes:
Quando os eventos On Getting Focus e/ou On losing Focus são selecionados para um objeto tabulável, você pode detectar e gerenciar a mudança de foco, fazendo uso do comando Form event que retornará On Getting Focus ou On losing Focus, dependendo do caso.
Os botões 3D permitem estabelecer interfaces gráficas avançadas (para uma descrição dos botões 3D, consulte o Manual de Desenho). Além dos eventos genéricos, dois eventos específicos podem ser utilizados para gerenciar estes botões:
Este evento é utilizado geralmente para mostrar menus suspensos no caso de cliques longos nos botões. O evento On Clicked, se estiver selecionado, será gerado se o usuário liberar o botão do mouse antes do tempo limite do “clique longo”.
4D permite gerenciar este tipo de botão utilizando o evento On Arrow Click. Este evento é gerado quando o usuário clica na “seta” (assim que o botão do mouse seja pressionado):
- Se o menu suspenso é do tipo “separado,” o evento somente é gerado quando um clique ocorre na parte do botão com a seta.
- Se o menu suspenso é do tipo “ligado,” o evento é gerado quando ocorre um clique em qualquer parte do botão. Por favor tenha em conta que o evento On Long Click não pode ser gerado com este tipo de botão.
Os estilos de botões 3D, botões de opção 3D e caixas de seleção 3D que aceitam a propriedade “Com menu suspenso” são: Nenhum, Botão de barra, Bevel, Bevel arredondado e Office XP.
Sete eventos de formulário podem ser utilizados para administrar as diferentes características específicas dos list boxes:
Além de eventos genéricos, três eventos específicos podem ser usados para gerenciar as ações que os usuários realizam em listas hierárquicas:
Esses eventos não são mutuamente exclusivos. Eles podem gerar um após o outro para uma lista hierárquica:
- Em resposta a pressionar uma tecla (em ordem):
Evento | Contexto | |
On Data Change | Um elemento estava em edição | |
On Expand/On Collapse | Abertura/fechamento de uma sublista utilizando as teclas de flechas -> o <- | |
On Selection Change | Seleção de um novo elemento | |
On Clicked | Ativação da lista utilizando o teclado |
Evento | Contexto | |
On Data Change | Um elemento estava em edição | |
On Expand/On Collapse | Abertura/fechamento de uma sob lista utilizando os ícones de distribuição/contração | |
o | ||
Doble-clic em uma sob lista não editável | ||
On Selection Change | Seleção de um novo elemento | |
On Clicked / On Double Clicked | Ativação da lista por um clic ou um doble-clic |
Um objeto de conteúdo do sub-formulário (objeto incluído no formulário pai contém uma instância do sub-formulário) suporta os seguintes eventos:
Nota: é possível definir todos os tipos de eventos personalizados que podem ocorrer em um sub-formulário através do comando CALL SUBFORM CONTAINER. Este comando lhe permite chamar o método do objeto de recipiente e passar um código de evento.
Existem sete eventos para formulários especificamente disponíveis para as zonas de web:
Este exemplo ordena uma seleção de subnotificações para a subtabela [Pais]Filhos antes que um formulário da tabela [Pais] seja visualizado no monitor:
` Método de um formulário para a tabela [Pais]
Case of:(Form event=On Load)
ORDER SUBRECORDS BY([Pais]Filhos;[Pais]Nome'Filhos;>)
` ...
End case
Este exemplo mostra o evento On Validate utilizado para atribuir automaticamente (a um campo) a fecha quando o registro é modificado:
` Método de um formulário
Case of
` ...
:(Form event=On Validate)
[unaTabla]Data que foi modificado:=Current date
End case
Neste exemplo, a gestão completa de um menú drop-down, (inicialização, clics do usuário, e liberação de objeto) está encapsulado no método de objeto:
` Método de objeto do menú drop-down tama
Case of
:(Form event=On Load)
ARRAY STRING(31;asTalla;3)
tama{1}:="pequena"
tama{1}:="media"
tama{1}:="grande"
:(Form event=On Clicked)
If(tama#0)
ALERT("Escolheu um hamburguer "+tama{tama})
End if
:(Form event=On Unload)
CLEAR VARIABLE(tama)
End case
Este exemplo mostra como aceitar e administrar uma operação de arrastar e soltar para um objeto de campo que aceita somente valores de imagens, em um método de objeto.
` Método de objeto de campo Imagem [umatabela]umaImagem
Case of
:(Form event=On Drag Over)
` Ha iniciado uma operação arrastar e soltar e o mouse está sobre o campo
` Obter a informação sobre o objeto fonte
DRAG AND DROP PROPERTIES($vpObjetoOrigem;$vlElementoOrigem;$lProcessoOrigem)
` Note que não necessitamos provar o número de processo fonte
` para o método de objeto executado ja que é o mesmo processo
$vlTipoDados:=Type($vpObjetoOrigem->)
` ¿Os dados fonte são uma imagem (campo, variável ou array)?
If(($vlTipoDados=Is Picture)|($vlTipoDados=Picture array))
` Sim é assim, aceite o arrastar.
` Note que o botão do mouse ainda está pressionado, o único efeito ainda
` aceita o arrastar permitindo a 4D ressaltar o objeto de maneira que o usuario
` saiba que os datos fonte possam ser soltados neste objeto.
$0:=0
Else
` Caso contrario, rejeite o arrastar
$0:=-1
` Neste caso, o objeto não ressalta
End if
:(Form event=On Drop)
` Os dados fonte foram soltos sobre o objeto, portanto necessitamos copiar-los no objeto
` Obter a informação sobre o objeto fonte
DRAG AND DROP PROPERTIES($vpObjetoOrigem;$vlElementoOrigem;$lProcessoOrigem)
$vlTipoDatos:=Type($vpObjetoOrigem->)
Case of
` O objeto fonte é um campo ou uma variável tipo imagem
:($vlTipoDados=Is Picture)
` O objeto fonte é do mesmo processo (da mesma janela e formulário)?
If($lProcessoOrigem=Current process)
` Se é assím, copiar o valor fonte
[aTabela]aImagem:=$vpObjetoOrigem->
Else
` Se não, o objeto fonte é uma variável?
If(Is a variable($vpObjetoOrigem))
` Se é assim, obter o valor do processo fonte
GET PROCESS VARIABLE($lProcessoOrigem;$vpObjetoOrigem->;$vgImagemArrastada)
[aTabela]aImagem:=$vgImagemArrastada
Else
` Se não, utilize CALL PROCESS para obter o valor do campo do processo fonte
End if
End if
` O objeto fonte é um array de imagens
:($vlTipoDados=Picture array)
` ¿O objeto fonte esta no mesmo processo (na mesma janela e formulario)?
If($lProcessoOrigem=Current process)
` Se é assím, copiar o valor fonte
[aTabela]aImagem:=$vpObjetoOrigem->{$vlElementoOrigem}
Else
` Se não, obter o valor do processo fonte
GET PROCESS VARIABLE($lProcessoOrigem;$vpObjetoOrigem;
->{$vlElementoOrigen};$vgImagemArrastada)
[aTabela]aImagem:=$vgImagemArrastada
End if
End case
End case
Observação: para mais exemplos sobre a gestão dos eventos On Drag Over y On Drop, consulte os exemplos do comando DRAG AND DROP PROPERTIES.
Este exemplo é um modelo para um método do formulário. Mostra cada um dos eventos possíveis que podem ocorrer quando um relatório usa um formulário como formulário de saída:
` Método de um formulário utilizado como formulário de saída de um relatório
$vpFormTabla:=Current form table
Case of
` ...
:(Form event=On Header)
` Uma área de cabeçalho esta pronta para ser impressa
Case of
:(Before selection($vpFormTabla->))
` O código para a primeira ruptura de cabeçalho deve estar aqui
:(Level=1)
` O código para a ruptura de cabeçalho de nível 1 deve estar aqui
:(Level=2)
` O código para a ruptura de cabeçalho de nível 2 deve estar aqui
` ...
End case
:(Form event=On Printing Detail)
` Vai ser impresso um registro
` O código para cada registro deve ir aqui
:(Form event=On Printing Break)
` Uma área de ruptura esta a pronta para ser impressa
Case of
:(Level=0)
` O código para a ruptura 0 deve estar aqui
:(Level=1)
` O código para a ruptura 1 deve estar aqui
` ...
End case
:(Form event=On Printing Footer)
If(End selection($vpFormTabla->))
` O código para o último rodapé da página vai aqui
Else
` O código para o rodapé da página deve ir aqui
End if
End case
Este exemplo mostra o modelo de um método de formulário que administra os eventos que podem ocorrer em um formulário mostrado utilizando os comandos DISPLAY SELECTION ou MODIFY SELECTION. Por propósitos didáticos, mostra a natureza do evento na barra de título da janela do formulário.
` Um método de formulário
Case of
:(Form event=On Load)
$vsEvento:="O formulário vai ser visualizado"
:(Form event=On Unload)
$vsEvento:="O formulário de saída foi fechado e vai desaparecer da tela"
:(Form event=On Display Detail)
$vsEvento:="Mostrando o registro #"+String(Selected record number([LaTabla]))
:(Form event=On Menu Selected)
$vsEvento:="Um comando do menú foi seleccionado"
:(Form event=On Header")
$vsEvento:="A área de cabeçalho esta pronta para ser desenhada"
:(Form event=On Clicked")
$vsEvento:="Foi realizado um clic em um registro"
:(Form event=On Double Clicked")
$vsEvento:="Foi realizado um doble clic em um registro"
:(Form event=On Open Detail)
$vsEvento:="Foi realizado um doble clic no registro #"+String(Selected record number([ATabela]))
:(Form event=On Close Detail)
$vsEvento:="Retorno ao formulário de saída"
:(Form event=On Activate)
$vsEvento:="A janela de formulário passa ao primero plano"
:(Form event=On Deactivate)
$vsEvento:="A janela do formulário não é mais a janela do primero plano"
:(Form event=On Menu Selected)
$vsEvento:="Foi selecionado um elemento do menú"
:(Form event=On Outside Call)
$vsEvento:="Foi recebido uma chamada do exterior"
Else
$vsEvento:="¿O que acontece? O evento #"+String(Form event)
End case
SET WINDOW TITLE($vsEvento)
Para os exemplos sobre gestão dos eventos On Before Keystroke e On After Keystroke, ver os exemplos dos comandos Get edited text, Keystroke y FILTER KEYSTROKE.
Este exemplo mostra como tratar da mesma forma os clics e doble clic em uma área de deslocamento:
` Método de objeto para a área de deslocamento asOpçoes
Case of
:(Form event=On Load)
ARRAY STRING(...;asOpçoes;...)
` ...
asOpçoes:=0
:((Form event=On Clicked)|(Form event=On Double Clicked))
If(asOpçoes#0)
` Foi feito clic em um elemento, fazer algo aqui
` ...
End if
` ...
End case
Este exemplo mostra como tratar os clics e doble clics utilizando uma resposta diferente. Note o uso do elemento zero para conservar o valor do elemento selecionado:
` Método de objeto para a área de deslocamento asOpçoes
Case of
:(Form event=On Load)
ARRAY STRING(...;asOpçoes;...)
` ...
asOpçoes:=0
asOpçoes{0}:="0"
:(Form event=On Clicked)
If(asOpçoes#0)
If(asOpçoes#Num(asOpçoes))
` Foi realizado clic em um novo elemento, fazer algo aqui
` ...
` Guardar o novo elemento selecionado para a próxima vez
asOpçoes{0}:=String(asOpçoes)
End if
Else
asOpçoes:=Num(asOpçoes{0})
End if
:(Form event=On Double Clicked)
If(asOpçoes#0)
` Foi realizado doble clic sobre um elemento, fazer algo diferente aqui
End if
` ...
End case
Este exemplo mostra como manter uma área de texto a partir de um método desde um método de formulário, utilizando os eventos On Getting Focus y On losing Focus:
`Método de formulário [Contatos];"Entrada"
Case of
:(Form event=On Load)
C_TEXT(vtAreaEstado)
vtAreaEstado:=""
:(Form event=On Getting Focus)
RESOLVE POINTER(Focus object;$vsNomeVar;$vlNumTabela;$vlNumCampo)
If(($vlNumTabela#0) & ($vlNumCampo#0))
Case of
:($vlNumCampo=1) ` Campo nome
vtAreaEstado:="Introduza o nome do contato; será passado automaticamente a maiúsculas"
` ...
:($vlNumCampo=10) ` Campo código postal
vtAreaEstado:="Introduza um código postal; será verificado e validado automaticamente"
` ...
End case
End if
:(Form event=On Losing Focus)
vtAreaEstado:=""
` ...
End case
Este exemplo mostra como responder ao evento de fechamento de uma janela com um formulário utilizado para a entrada de dados:
` Método para um formulário de entrada
$vpFormTabela:=Current form table
Case of
` ...
:(Form event=On Close Box)
If(Modified record($vpFormTabela->))
CONFIRM("Este registro foi modificado. Desejas guardar as mudanças?")
If(OK=1)
ACCEPT
Else
CANCEL
End if
Else
CANCEL
End if
` ...
End case
Este exemplo mostra como passar a maiúsculas um campo de tipo texto ou alfanumérico cada vez que o valor seja modificado:
`Método de objeto para [Contatos]Nome
Case of
` ...
:(Form event=On Data Change)
[Contatos]Nome:=Uppercase(Substring([Contatos]Nome;1;1))+
Lowercase(Substring([Contatos]Nome;2))
` ...
End case
Este exemplo mostra como passar a maiúsculas um campo de tipo texto ou alfanumérico cada vez que o valor seja modificado:
`Método de objeto para [Contatos]Nome
Case of
` ...
:(Form event=On Data Change)
[Contatos]Nome:=Uppercase(Substring([Contatos]Nome;1;1))+
Lowercase(Substring([Contatos]Nome;2))
` ...
End case
Produto: 4D
Tema: Eventos de formulário
Número
388
Modificado: 4D v11 SQL Release 2
Modificado: 4D v12
CALL PROCESS
CALL SUBFORM CONTAINER
Current form table
DRAG AND DROP PROPERTIES
FILTER KEYSTROKE
Get edited text
Keystroke
SET TIMER