4D v14

Video script

Página Inicial

 
4D v14
Video script

Video script  


 

 

Neste vídeo, vamos a aprender o funcionamento dos eventos e sua programação.

Primeiro, vamos a diferenciar entre:

  • Os eventos "formulário" que figuram nas propriedades do formulário
  • Os eventos "da base de dados" que se definem nas propriedades de uma tabela, os eventos base associados aos triggers, em outras palavras, a programação que se executa quando ocorre um evento específico.

Os eventos de formulário só se ativam quando se utiliza um formulário (na tela ou ao imprimir), portanto, quando a interface está sendo utilizada por um usuário (clique, arrastar e soltar, seleção de elementos de um menu, teclado...).

Os eventos base só se referem a 3 ações que se realizam nos dados:

  • Criação
  • Modificação
  • Eliminação.

Estes 3 eventos são interceptados pelo motor de dados. Isto é importante já que em modo cliente/servidor, o motor de dados se executa no servidor pelo que nunca irá ver um evento de base de dados ser executado no computador cliente. Não poderá ser rastreado desde um computador cliente. Volveremos aos eventos de base de dados mais a frente.

Em primeiro lugar, vamos nos divertir um pouco e criar um botão um tanto "especial".

  • Vamos à página 4 do formulário Navigation, página das preferências.
  • Desenhamos um botão estandarte
  • Modificamos suas propriedades:
  •      - o nome do botão será bSpecial
  •      - só o evento "On Mouse Enter" permanece selecionado
  • E editamos o método do botão (Alt + clique no botão)

introduzimos o seguinte código:

  //Localização do mouse quando inicia o método
 GET MOUSE($Mouse_H;$Mouse_V;$MouseButton//Aonde está o objeto na janela
 OBJECT GET COORDINATES(bSpecial;$Obj_L;$Obj_T;$Obj_R;$Obj_B)
 
  //Calculemos o centro do objeto
 $Center_H:=$Obj_L+(($Obj_R-$Obj_L)/2)
 $Center_V:=$Obj_T+(($Obj_B-$Obj_T)/2)
 
 $Shift:=10 //Planejar um deslocamento adicional de X píxeles
 
 If($Mouse_H<$Center_H//Se o mouse está à esquerda do centro
    $T:=$Mouse_H-$Obj_L+$Shift  //Mover o objeto à direita
 Else //O mouse está à direita do centro
    $T:=-($Obj_R-$Mouse_H+$Shift//Mover o objeto à esquerda
 End if

 If($Mouse_V<$Center_V//Se o mouse está encima do centro
    $B:=$Mouse_V-$Obj_T+$Shift  //Mover para baixo
 Else //O mouse está debaixo do centro
    $B:=-($Obj_B-$Mouse_V+$Shift//Mover para cima
 End if
 
  //Mover o botão de acordo à informação definida acima
 OBJECT MOVE(bSpecial;$T;$B)

O que significa que:

  • Calculamos à posição do mouse
  • A posição do objeto (o botão) para determinar seu centro
  • Planejamos mover o objeto um determinado número de píxeles
  • E a continuação vamos a calcular onde está o mouse de acordo ao centro do botão, horizontalmente e verticalmente.
  • A continuação, podemos simplesmente mover a posição do botão.

Vamos ver no que isto nos dá:

  • Mostramos o formulário (usando o método Navigation)
  • Vamos à página de preferências
  • E tratamos de fazer clique no botão.

Cada vez que nos acercamos ao botão, é movida na direção oposta (esquerda, direita, acima ou abaixo). 

Se o botão se retira da tela, fechamos o formulário e começamos de novo, o botão voltará a aparecer em sua posição inicial.

Esse foi um exemplo do uso de eventos.

Demos uma olhada a outro exemplo: durante a entrada de uma intervenção, queremos calcular sua duração com base na informação introduzida na hora de inicio e final.

Teremos que:

  • Primeiro adicionar o campo End time à tabela.
    Para economizar tempo, copiamos o campo Time e o colamos na tabela e logo mudamos seu nome.
  • A continuação será adicionada ao formulário de entrada duplicando o campo de hora de inicio e adaptando o campo correspondente: hora de intervenção final.
  • Adicionamos a duração para verificar que nossa programação funcione corretamente.
  • A continuação, devemos indicar que a duração deve ser recalculada quando um dos campos de hora seja modificado.
  • Selecionamos o evento "On Data Change" e indicamos o cálculo a realizar.
    Atenção: ALT-Clic em 2 objetos que não têm os métodos, cria o método somente para o objeto no qual foi feito clique.

A duração se recalculará como a diferença entre a hora final menos a hora de intervenção, com a condição de que o tempo final se enche (em outras palavras, que não seja zero).

Agora podemos copiar o código e criar o método de hora de final.

Quando vamos a modificá-la: a hora de intervenção deve ser preenchida e o cálculo da duração sempre será o mesmo.
É claro, vamos a comprovar que as horas sejam editadas e logo vamos a provar em uma intervenção:

  • Tomamos todas as intervenções,
  • Logo tomamos à primeira
  • Introduzimos 14:00 e temos uma duração de 2 horas que se calcula
  • de 12:00 a 17:30 => 5:30
  • Se começamos às 14:00, então temos uma duração de 3:30

A programação foi realizada realmente quando saímos do campo, em outras palavras, no contexto do evento "On Data Change".

Na seguinte seção, vamos a tratar a programação de arrays.

 
PROPRIEDADES 

Produto: 4D
Tema: Eventos

 
ARTICLE USAGE

Autoformação ( 4D v13)
Autoformação ( 4D v14)