Recentemente, 4D introduziu um novo tipo de variável: colecções, assim como um grande conjunto de métodos para as manipular. Com 4D v17, as possibilidades de colecções estão a tornar-se maiores ao serem capazes de exibir facilmente o conteúdo de uma colecção. Como? Listar caixas do tipo de colecção!
A grande vantagem da utilização de colecções é que se pode exibir dados heterogéneos na mesma coluna. Por exemplo, digamos que tem uma colecção com um campo “livre” para o utilizador final. Dependendo do contexto, por vezes o utilizador pode introduzir um número, por vezes um texto, por vezes uma data. Agora pode exibir tudo numa coluna de caixa de listagem sem ter de forçar um elenco.
Não há necessidade de converter a sua colecção em matriz. Sem código. Simplesmente fácil!
Caixas de listagem de colecções: exemplo
Como configurar a caixa de listagem
Primeiro, escolher a caixa de listagem tipo “Colecção”. Depois, como fonte de dados, introduzir uma variável ou uma expressão que devolva uma colecção.
Deve então definir a fonte de dados para cada coluna da sua caixa de listagem. É simples, basta introduzir uma expressão para cada coluna da lista de propriedades, como faria para uma caixa de listagem do tipo de selecção actual.
Para o fazer, terá de utilizar o novo This comando. Retorna um objecto que contém o elemento que está actualmente a ser redesenhado. Numa caixa de listagem, este comando é avaliado para cada linha e permite o acesso a todos os atributos do elemento de colecção actual.
Conteúdo Formatação utilizando uma expressão
Enquanto uma caixa de listagem de tipo de selecção permite introduzir uma expressão para definir a cor da fonte, a cor de fundo, o estilo da fonte, o estado seleccionável e activado, ainda é necessário indicar um método de projecto ou uma expressão para cada acção. Com caixas de listagem de tipo de colecção, é ainda mais fácil, pode simplesmente definir todos estes parâmetros num método de projecto SINGLE, a expressão meta info.
A meta expressão é avaliada para cada linha exibida e devolve um objecto que contém os seguintes atributos:
- fill: introduzir uma cor CSS para definir a cor de fundo
- stroke: introduzir uma cor CSS para definir a cor da fonte
- fontStyle: definir valor como “itálico” para aplicar o estilo itálico, senão defini-lo como “normal
- fontWeight: definir valor como “negrito” para aplicar o estilo negrito, senão defini-lo como “normal”.
- textDecoration: definir o valor como “sublinhado” para aplicar o estilo de sublinhado, ou então defini-lo como “normal”.
- unselectable: introduzir um booleano para definir se a fila é seleccionável ou não
- disabled: entrar num booleano para activar ou desactivar a fila.
Se o atributo não existir, 4D utiliza o valor por defeito.
Por exemplo, é possível ligar a meta expressão “Decorar” à caixa de listagem. O método “Decorar” contém o seguinte código:
If (Isto.value>10)
$0 :=New object("fill"; "red"; "stroke"; "white"; "fontWeight"; "bold")
Else
$0 :=New object("fill"; "blue")
End if
Neste exemplo, se o atributo “valor” for superior a 10, o fundo da linha será vermelho com texto branco em negrito. Se o atributo “valor” for inferior a 10, o fundo de fila será azul.
Recuperar o(s) elemento(s) seleccionado(s)
Com as propriedades “Item actual ” e “Posição actual do item”, pode recuperar os objectos do elemento actual da colecção, bem como a sua posição.
A propriedade “Itens seleccionados” permite-lhe recuperar uma colecção dos itens seleccionados da caixa de listagem. Pode até definir esta nova colecção como a fonte de dados para outra caixa de listagem. Assim, sem uma única linha de código, pode exibir o subconjunto de uma caixa de listagem noutra.
no lado dos comandos 4D
Os comandos 4D do tema “Caixa de listagem” foram actualizados para suportar o tipo de colecção. Alguns exemplos: LISTBOX SORT COLUMN, LISTBOX INSERT COLUMN FORMULA, LISTBOX SET COLUMN FORMULAetc. Para mais detalhes, consulte a lista completa dos comandos da caixa de lista 4D.