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:
- Criar o array em memória
- Colocar um objeto no formulário que pode representar este array em memória
- Verificar que o array contenha a informação correta
- 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)
ARRAY TEXT(PopObjects;5)
PopObjects{1}:="Training"
PopObjects{2}:="Software"
PopObjects{3}:="Hardware"
PopObjects{4}:="Network"
PopObjects{5}:="System"
:($evt=On Clicked)
If(PopObjects#0)
$ChosenElement:=PopObjects
$ChosenValue:=PopObjects{$ChosenElement}
[Interventions]Object:=$ChosenValue
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.