segunda-feira, 31 de maio de 2010

Colecionando Figurinhas!

Interessante como temos mania de colecionar coisas, veja o momento, agora todo mundo está colecionando as figurinhas da copa do mundo, e tem até bandido roubando a carga das tais figurinhas, e vendendo por um precinho mais 'camarada' no mercado negro!. Coleções de selos, coleções de insetos, ..., e  ai vai.

Genexus também possui coleções, e o interessante desse recurso é que, assim como acontece no mundo real, as coleções normalmente se constituem de conjuntos de dados cuja dimensão não é conhecida. Diferentemente de seus primos próximos, e limitado, que são as matrizes e vetores.

Então para ficar bem claro, as coleções em Genexus são elementos criados a partir de variáveis, que são, portanto, armazenadas na memória do servidor web (claro, em sistemas web) e que permitem a realização de operações sobre conjuntos.

Para clarear ainda mais as idéias, vai ai um exemplo.  Um painel, com um grid obtém seus dados a partir da chamada a um procedimento que devolve a coleção a ser carregada. No Source do procedimento temos:

&item = "Itapecerica da Serra"
&lista.Add(&item)

&item = "Mombuca"
&lista.Add(&item)

&item = "Divinópolis"
&lista.Add(&item)

Sendo &item uma variável simples do tipo Character(20) e &lista uma variável do tipo Character(20) marcada como Collection. Na regra PARM deste procedimento temos:

parm(out:&lista);

A chamada ao procedimento ocorre no evento Start de um WebPanel, que possui um Grid com uma variável &cidade (Character 20), que é carregada com os dados da lista obtida.

Event Start

   &lista = Procedure1.Udp()
   for &item in &lista
      &cidade = &item
      load
   endfor
EndEvent

E claro que o resultado não podia ser outro.







E por falar em figurinha, tenho algumas repetidas aqui comigo e está faltando na minha coleção a do Luiz Fabiano, alguem tem ai?