4D v16Arrays, pop-ups, list boxes |
||||||||||||||||||||||||||||||||||||
|
4D v16
Arrays, pop-ups, list boxes
Arrays, pop-ups, list boxes
Além das manipulações explicadas no vídeo, também deve levar em conta que: Os arrays são uma das características indispensáveis em 4D. Práticos, ilimitados, dinâmicos, de uma ou duas dimensões, são um espaço em memória que se pode mostrar nos formulários por intermédio de objetos (pop-ups, combo boxes, list boxes, áreas de deslocamento, etc.) Já tratamos o conceito e o uso de variáveis com um só valor. Um array é uma variável com vários valores onde se podem ler ou escrever cada um de seus elementos. Definimos um array pelo número de linhas que contém e seu tipo. Este gráfico mostra as diferentes etapas de uma variável e o ciclo da vida de um array:
Como pode ver, há um número de similaridades entre as duas. O nome do array se utiliza as vezes com chaves {}, as vezes sozinho. Neste caso, se trata de uma variável (inteiro longo) criada automaticamente por 4D. Esta variável, associada ao array, serve como um índice (número de linha) de array. É através desta variável que podemos saber que linha foi selecionada pelo usuário ou forçar as seleções de uma linha especifica no menu pop-up. Esta é a razão pela que verá muitas vezes esta sintaxe concisa escrita na base de dados: [INTERVENTIONS]Object:=ObjectsArr{ObjectsArr} que podemos decifrar da seguinte maneira: "Object := conteúdo do array {na linha selecionada}" [INTERVENTIONS]Object:=Self->{Self->} Independentemente da sintaxe utilizada, o funcionamento é o mesmo. Em 4D, uma guia é um objeto único, com vários títulos (valores). Este é um exemplo de um objeto de interface que pode representar um array. Geralmente, colocamos as guias na página 0 do formulário (ver a seção cobre este ponto). Notará que os arrays se tornam bem úteis rapidamente, na verdade pronto se convertem em uma necessidade. Um array contém somente elementos do mesmo tipo. Não pode ter um array com um elemento Alfa, um elemento Data e um terceiro elemento Hora.Neste caso, pode utilizar um array de ponteiros que apontem as variáveis de diferentes tipos. Como se mencionou na lição sobre os ponteiros, se podem combinar ponteiros e arrays para obter "arrays de ponteiros". Também pode considerar que um list box é uma série de arrays conectados (da mesma dimensão X). É um objeto que agrupa e sincroniza um ou mais arrays. Em um list box, pode configurar:
Em total, se o list box tem X colunas, você tem 2X+1 objetos (X colunas, X cabeçalhos + 1 list box). Os list boxes permitem:
Leve em conta que o list box sincroniza suas colunas, toma o menor número de linhas dos arrays que o compõe. Este ponto é importante de lembrar, já que poderia ter arrays que estão cheios de dados e ainda assim terminar com um list box vazio se um de seus arrays está vazio. 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:
Para nos ajudar a entender isto, vamos a criar um primeiro array no formulário DETAIL da tabela INTERVENTIONS. Este array preocupa os objetos.
Para simplificar as coisas, vamos a colocar toda a programação no objeto. Isto também nos permitirá revisar o conceito de evento.
$evt:=Form event O método objeto se compõe de certo número de elementos:
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. 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:
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). [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.
Assim que esta divisão nos ajuda a entender em detalhe. Agora vamos a criar um novo array onde podemos introduzir uma data com mais ou menos 10 dias.
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: 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
HISTÓRIA
ARTICLE USAGE
Autoformação ( 4D v16) |
||||||||||||||||||||||||||||||||||