Os List box são objetos ativos complexos que permitem mostrar e introduzir dados em forma de colunas sincronizadas. Estes objetos tem as mesmas características básicas das “áreas de rolagem agrupadas”, assim como novas possibilidades estendidas (entrada de valores, classificação de colunas, aparência personalizada, rolagem de colunas, etc.). Um objeto tipo List Box pode ser definido completamente utilizando o editor de formulários de 4D e também pode ser controlado por programação.

Este parágrafo detalhas as novas características relacionadas com a criação e definição de objetos tipo List Box no editor de formulários. Para maiores informações sobre o controle programado destes objetos, consulte o capítulo List Box do manual de Linguagem 4D.
Existem dois tipos de list boxes: os list box de tipo seleção e os list Box de tipo array.
- List Box de tipo seleção: o número de linhas está baseado na seleção atual ou em uma seleção temporária. Cada coluna está associada a um campo (por exemplo [Empregados]Nome) ou uma expressão 4D. A expressão pode ser baseada em um ou mais campos (por exemplo [Empregados]Nome+“ ”[Empregados]Nome) ou a uma fórmula (por exemplo Cadeia(Milisegundos)). A expressão também pode ser um método de projeto, uma variável ou um elemento de array.
No caso de uma list Box baseada na seleção atual, qualquer modificação efetuada do lado do banco se reflete automaticamente na list Box e vice versa. A seleção atual é portanto sempre a mesma nos dois lugares.
- List box de tipo array: o número de linhas está baseado no número de elementos do array. Cada coluna do list box está associada com um array 4D. Por padrão, 4D atribui o nome “ColunaX” a cada variável de coluna e a cada array associado. É possível mudar o nome nas propriedades da coluna. Com este tipo de list Box, a gestão dos valores introduzidos ou mostrados nos list box são efetuados através da linguagem de 4D. Você também pode associar uma lista de seleção a uma coluna para controlar a entrada de dados (ver o parágrafo Propriedades específicas de colunas de list box).
- List box de tipo Coleção ou seleção de Entidade: O número de linhas é baseada no número de elementos coleção. Na propriedades de coluna, cada coluna é associada com uma expressão 4D ou um elemento de uma coleção 4D (ver Propriedades específicas de colunas de list box). Elementos de Coleção são retornados usando o comando This command (por exemplo, This.firstName para exibir o valor da propriedade/atributo "firstName" para cada elemento/entidade).
Nota: Coleções e seleções de entidade são muito similares quanod usadas como fontes de list box. Entretanto, list box de seleções de entidade se beneficiam de propriedades adicionais relacionadas a entrada de dados pelo usuário (see Gestão de entrada) já que linhas estão diretamente conectadas aos dados da datastore.
Não é possível combinar em um mesmo list Box colunas associadas a campos (ou expressões) e colunas associadas com arrays no mesmo list Box.
Um list box contém uma ou mais colunas cujo conteúdo é sincronizado automaticamente. Por padrão, quando se cria uma list box, esta contém apenas uma coluna. É possível modificar o número de colunas (adicionar, duplicar ou apagar uma coluna) utilizando o menu contextual (clique na coluna ou no cabeçalho de uma coluna) ou nas propriedades do list Box.

O número de colunas é, em teoria, ilimitado (depende dos recursos do computador).
Um list Box está composto de três partes distintas: o objeto list box em seu conjunto, as colunas os títulos e os pés de colunas. No editor de formulários, esta partes podem ser selecionadas separadamente. Cada parte tem seu próprio nome e propriedades específicas. Por exemplo, o número de colunas ou a cor alternada de cada linha é definida nas propriedades do objeto list Box, a largura de cada coluna é definida nas propriedades das colunas, e a fonte do título é definida nas propriedades do título.
Um list box de tipo array pode ser visualizado em modo padrão ou em modo hierárquico. Os list boxes mostrados em modo hierárquico utilizam os mecanismos específicos, descritos a seguir.
Durante a execução, os list box permitem mostrar e introduzir dados em forma de listas.
Para passar de uma célula a modo edição (se a entrada estiver autorizada para a coluna), simplesmente clique duas vezes no valor que a contém:

Nota: para maior informação, consulte o parágrafo Gestão de entrada no manual de Linguagem de 4D.
É possível introduzir e mostrar o texto em várias linhas dentro de uma célula de list Box. Para adicionar um retorno à linha:
- em Windows, pressione as teclas Ctrl+Enter,
- em Mac Os, pressione as teclas Opção+Enter.
Note que a altura das linhas não se redimensionam automaticamente para list boxes do tipo array se a opção
Altura de linha automática estiver selecionada. Esta opção é ignorada para list boxes do tipo seleção e coleção.
É possível ordenar valores de colunas por meio de um clique em um título (ordenação padrão). A ordenação é alfanumérica e alternativamente ascendente/descendente com cliques múltiplos. Todas as colunas se sincronizam automaticamente.
Nota: para maior informação, consulte o parágrafo Gestão de ordenações no manual de Linguagem de 4D.
Também é possível redimensionar cada coluna:

O usuário pode modificar a ordem das linhas e colunas utilizando o mouse (se esta ação estiver autorizada):

O usuário pode selecionar uma ou várias linhas utilizando os atalhos padrões: Shift+clique para uma seleção contínua e Ctrl+clique (Windows) ou Comando + clique (Mac OS) para uma seleção não adjacente.
Todas estas características podem ser controladas utilizando as propriedades do list Box, das colunas, dos cabeçalhos e dos pés, as quais são detalhadas nos parágrafos a seguir.
Nota: as características específicas dos list boxes utilizados em modo hierárquico são descritas na seção List box hierárquicas]
Os list boxes podem ser impressos em forma modo "pré-visualização" (impressão de uma imagem da área do list box) ou em modo "avançado" (impressão dinâmica de tamanho variável). Para mais informação, consulte Imprimir list boxes no Manual de Linguagem de 4D.