4D v14

Video script

Página Inicial

 
4D v14
Video script

Video script  


 

 

Neste vídeo, vamos a aprender a criar e programar arrays assim também os objetos que podemos utilizar para que sejam representados nos formulários.

Ao igual que uma variável simples, um array deve:

  • Ser declarado
  • Atribuir-lhe um valor
  • E logo utilizá-lo.

Para nos ajudar a entender isto, vamos a criar um primeiro array no formulário DETAIL da tabela INTERVENTIONS.

Este array preocupa os objetos.
Devemos então:

  1. Criar o array em memória
  2. Colocar um objeto no formulário que pode representar este array em memória
  3. Verificar que o array contenha a informação correta
  4. Logo, quando se seleciona um valor no array, transferimos este valor ao campo

Para simplificar as coisas, vamos a colocar toda a programação no objeto. Isto também nos permitirá revisar o conceito de evento.

  • Selecionamos o objeto popup/lista deslocável
  • Logo, traçar à direita do campo OBJECT.
  • O chamamos PopObjects
  • Selecionamos os eventos On Load e On Clicked
  • A continuação editamos o método.

 $evt:=Form event
 Case of
    :($evt=On Load//antes da visualização do formulário
       ARRAY TEXT(PopObjects;5) //Definição do array (tipo, nome e número de elementos)
 
  //Cheio dos elementos do array
       PopObjects{1}:="Training"
       PopObjects{2}:="Software"
       PopObjects{3}:="Hardware"
       PopObjects{4}:="Network"
       PopObjects{5}:="System"
 
    :($evt=On Clicked//quando o usuário seleciona um elemento no array
       If(PopObjects#0) //se o usuário seleciona um elemento
          $ChosenElement:=PopObjects //se guarda o elemento selecionado
          $ChosenValue:=PopObjects{$ChosenElement//guardamos o valor contido neste elemento
          [Interventions]Object:=$ChosenValue  //atribuímos o valor ao campo
       End if
 End case

O método objeto se compõe de certo número de elementos:

  • Inicialmente, a prova do evento.
  • Se tratado de "On Load", criamos um array de 5 elementos, onde o primeiro elemento conterá "Training" e assim sucessivamente
  • E quando fazemos clique no objeto, a transferência será realizada no objeto.

Vamos a rastrear o funcionamento deste método mediante a realização de uma prova inicial.

Vemos que quando fazemos duplo clique em uma intervention, vamos a On load.

Vamos poder mostrar o array que contém 5 elementos e a estes 5 elementos se lhes atribuem valores pouco a pouco.
A intervenção aparece.

Quando elegemos um valor no menu, vemos aqui o número de linha indicado em uma variável, que é uma variável que tem o mesmo nome que o array, só que é uma variável de tipo inteiro longo.

E aqui vemos os 5 elementos do array, os elementos de 1 a 5 e logo o elemento zero, ao qual volveremos mais a frente.

Quando se executa este método:

  • O evento em questão é "On Clicked".
  • Comprovamos que um elemento foi selecionado.
  • Se o elemento foi selecionado, podemos:
  •      - Passar pela variável intermediária (neste caso "ChosenElement")
  •      - Recuperar o valor elegido, se nos prendemos em ChosenElement, vemos que se trata de "Hardware"
  •      - E transferimos este valor selecionado ao objeto.

Podemos substituir estas 3 linhas por uma só como segue:

 [Interventions]Object:=PopObjects{PopObjects}

Por quê?

Por que este valor é a variável inteiro longo que continha 3 antes, pelo que indica o número de linha do array em questão (que tem o mesmo nome).
Para questões gerais, com frequência encontrará este tipo de sintaxes:

 [Interventions]Object:=Self->{Self->}

que utiliza um ponteiro ao objeto.

Dado que a programação é levada a cabo no objeto em si mesmo, Self se refere ao objeto e quando escrevemos Self->{Self->},

indicamos o array {na linha escolhida no array} e transferimos o conteúdo diretamente no objeto.

Vamos fazer seguimento para comprovar que se obtém o mesmo resultado.

  • Atualmente temos "network" no objeto [intervention].
  • Se mostramos PopObjects{PopObjects} temos "network"
  • Se mostramos Self->{Self->} também temos "network"

Assim que esta divisão nos ajuda a entender em detalhe.
Esta é a forma mais genérica e concisa de escrever.

Agora vamos a criar um novo array onde podemos introduzir uma data com mais ou menos 10 dias.

  • Duplico o objeto
  • Mudo o nome
  • Copio
  • Modifico seu método.

Esta é um array data de 21 elementos: hoje + 10 dias - 10 dias

E vamos a escrever o código mais conciso desta maneira.

Agora, Como encher estes elementos? Vamos a fazer um bucle no qual atribuímos um valor ao array da seguinte maneira: (Current date + $i-11).

É claro, o array terá o nome correto e agora podemos provar:
e vemos aqui que quando se elege um valor do array, se passa junto à data de intervenção.

Agora que já sabe como programar arrays, pode representá-los em diferentes objetos 4D, tais como list boxes.

Um list box é um objeto composto por uma ou mais colunas com um cabeçalho e uma coluna que é a que nos interessa, onde somente teremos que escrever o nome do array que temos administrado em memória.

Se voltamos agora a uma intervenção, o list box contém os diferentes valores do array e vemos a sincronização direta entre a eleição no list box e a correspondente no array aqui.

Vamos a programar o list box da mesma maneira para que quando façamos clique nele ou quando se faça uma nova seleção no mesmo list box, o valor do objeto se modifique automaticamente.

No list box selecionamos os eventos On Clicked e On Selection Change.

Somente temos que copiar a seguinte linha no método objeto do list box:

 [Interventions]Object:=PopObjects{PopObjects}

Durante o uso, quando se seleciona um valor no list box com o mouse ou com as flechas do teclado, os valores se transferem de automaticamente.

É claro, também é possível utilizar arrastar e soltar, sempre e quando as áreas se definam como arrastáveis e soltáveis.

 
PROPRIEDADES 

Produto: 4D
Tema: Arrays, pop-ups, list boxes

 
ARTICLE USAGE

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