Tag recordList

.html ›› .html ›› .html ››
Parent Previous Next

Tag recordList


A tag/componente recordList é uma lista de registros na interface. Usada em conjunto com um NodeDatabase, o controle apresenta um painel na interface para cada item/nodo filho de um campo.


Observações:


Considere também a utilização da tag gridRecordList, visto que ela possui mais recursos.

Herança

O recordList possui todas as características da tag layout. 

Veja:


Características

Além das características herdadas, o recordList possui também as seguintes características:

Propriedades e atributos

Propriedade

Tipo

Valor Padrão

Descrição

field

String

<string vazio>

Caminho de um campo no NodeDatabase.


Quando associado, o recordList passa a usar este campo para salvar e apresentar os itens desta lista.


Observações:

  • Deve ser preenchido para o recordList funcionar.
  • O campo informado se tornará um nodo no NodeDatabase


Veja também:


templateForm

String

<string vazio>

Identifica qual é o template form do record list, isto é, o painel que será exibido para cada item.


Deve ser igual ao atributo "name" de um form contido em algum arquivo ".lfm" do projeto do plugin.


Sim, você precisará de outro arquivo ".lfm" para definir fazer esta tag funcionar.


itemHeight

Float

64.0

Altura padrão de cada item do recordList.


Este valor é usado quando a propriedade "height" do Template Form não for definida.


minQt

Integer

0

Define qual é a quantidade mínima de itens que este recordList deve apresentar na interface.


Experimente colocar o valor 1 nesta propriedade. As vezes isto ajuda o usuário =)


autoHeight

Boolean

False

Quando true, o recordList automaticamente se expande/contrai na vertical para melhor visualização de seus itens.


Quando false, o recordList apresenta barras de rolagens quando o conteúdo for maior que sua altura.


layout

Enumerado:

  • "vertical"
  • "horizontal"
  • "horizontalTiles"
  • "verticalTiles"

"vertical"

Define como são organizados visualmente os itens do recordList.


"vertical' - Os itens são empilhados de forma vertical, 1 item por linha. A altura de cada painel é definido pela propriedade "height" do templateForm e a largura é ajustada para equivaler à largura do recordList.


"horizontal" - Os Itens são empilhados lado a lado, de forma horizontal em apenas 1 linha. A largura de cada painel é definido pelo atributo "width" do templateForm e a altura é ajustada para equivaler à altura do recordList. A propriedade autoHeight é desativada ao usar este layout.


"horizontalTiles" - Os itens são dispostos na horizontal (lado a lado), podendo quebrar de linha quando for preciso mais espaço. Tanto a altura quanto a largura de cada painel são definidos pelas propriedades "width" e "height" do templateForm.


"verticalTiles" - Os itens são dispostos na vertical, podendo ocupar mais de 1 coluna quando houver espaço para isso. Tanto a altura quanto a largura de cada painel são definidos pelas propriedades "width" e "height" do templateForm.


selectable

Boolean

False

Indica se o recordList deve funcionar visualmente como uma lista de itens selecionáveis.


selectedNode

Objeto Nodo

<< Não há >>

Contém o Objeto Nodo do item atualmente focado/selecionado no recordList.


Caso não haja seleção, contém nil.


Ao atribuir um valor, o recordList procura qual de seus itens está associado ao nodo e o seleciona. Caso não encontre, a seleção será desfeita e selectedNode passará a ser nil.


selectedForm

Objeto Form

<< Não há >>

(Somente Leitura) Contém o Objeto Form do item atualmente focado/selecionado no recordList.


Caso não haja seleção, contém nil.



Métodos

Método

Descrição

recordList:append();

Insere um novo item ao recordList.


Retorno:

  • Caso consiga inserir um novo item, retorna o novo objeto Nodo do item inserido, senão retorna nil.


recordList:sort();

Força o recordList a executar uma reordenação de seus itens.


Observação:

  • Você deve manipular o evento onCompare para definir como os itens serão ordenados.

recordList:scrollToNode(node)

Se a propriedade "autoHeight" for false, este método movimenta as barras de rolagem do recordList para que o painel do nodo fique visível na tela do usuário.


Parâmetros:

    • node - um objeto Nodo identificando o nodo do item que deseja tornar visível na tela do usuário.




Eventos

Nome do evento

Descrição

onSelect

Este evento é invocado quando a seleção do recordList muda, isto é, quando um item for selecionado ou quando nenhum item estiver selecionado.


Observações: 

  • Para descobrir qual item foi selecionado, utilize as propriedades selectedNode e selectedForm
  • Este evento é disparado mesmo quando a propriedade "selectable" for false.


onBeginEnumeration

Este evento é invocado quando o recordList começar a enumerar as mudanças de itens, disparando, logo a seguir, 0 ou mais eventos onItemAdded e/ou onItemRemoved.


onItemAdded

Evento disparado quando um item for carregado/adicionado visualmente no recordList


Parâmetros:


Observações:

    • Este evento representa um item que foi enumerado visualmente na lista e não necessariamente que um novo item foi inserido nos dados salvos. Durante o carregamento dos dados, este evento é disparado para cada item carregado.


onItemRemoved

Evento disparado quando um item for descarregado/removido visualmente do recordList


Parâmetros:


Observações:

    • Este evento representa um item que deixou de ser enumerado visualmente da lista e não necessariamente que um item foi deletado dos dados salvos.


onEndEnumeration

Este evento é invocado quando o recordList terminar de enumerar as mudanças de itens e não houver outro evento onItemAdded e/ou oItemRemoved para disparar a seguir.


onCompare

Este evento é invocado em momentos chaves para garantir a ordenação dos itens que são mostrados na interface. Quando invocado, o evento traz 2 nodos para que o programador retorne, entre os dois, qual deve aparecer antes.


Parâmetros:

    • nodeA - Objeto Nodo contendo um nodo que deve ser comparado.
    • nodeB - Objeto Nodo contendo o outro nodo que deve ser comparado.


Retorno:

    • Retorne um número menor que 0 se "nodeA" deve ser exibido antes de "nodeB"
    • Retorne um número maior que 0 se "nodeA" deve ser exibido depois de "nodeB"
    • Retorne 0 se os dois são equivalentes na questão da ordem.


Observação: Veja o exemplo 2 para entender melhor como este evento funciona.



Veja Tratando eventos do Lua Form


Exemplos

Exemplo 1 - Lista simples de edits


Arquivo “ficha.lfm”

<?xml version="1.0" encoding="UTF-8"?>
<form name="frmFichaTeste">        
        <button left="20" top="20" height="25" text="Nova Magia" width="80"
                onClick="self.rclMagias:append();"/>

        <recordList name="rclMagias" field="magias" templateForm="frmItemDeMagia"
                    left="20" top="60" width="300" autoHeight="true"/>
</form>




Arquivo “itemDeMagia.lfm”

<?xml version="1.0" encoding="UTF-8"?>
<form name="frmItemDeMagia" height="30" margins="{top=2,bottom=2}">       

        <edit align="client" field="nome" margins="{right=2}"/>
       

        <button align="right" text="Apagar" width="80"
                onClick="ndb.deleteNode(sheet);"/>
</form>


A tag recordList do arquivo "ficha.lfm" utiliza o form do arquivo"itemDeMagia.lfm" quando é definido sua propriedade "templateForm".


 


Note que existe uma instância de "frmItemDeMagia" para cada item existente.


Observação: No botão apagar foi utilizada a biblioteca "ndb" para apagar um item. Leia mais sobre em:


Detalhes que valem prestar a atenção:



Exemplo 2 - Adicionando uma ordenação ao Exemplo 1


Manipulando o evento OnCompare parar ordenar de forma crescente pelo atributo "nome" dos itens.


.....
.....

<recordList name="rclMagias" field="magias" templateForm="frmItemDeMagia"
                        left="20" top="60" width="300" autoHeight="true">
        <event name="onCompare">
                return utils.compareStringPtBr(nodeA.nome, nodeB.nome);
        </event>
</recordList>

...
...




Ordenando pelo <custo, nome>. Isto é, ordenar pelo custo e considerar o nome em caso de empate.


<recordList name="rclMagias" field="magias" templateForm="frmItemDeMagia"
                        left="20" top="60" width="300" autoHeight="true">
        <event name="onCompare"><![CDATA[               

                if (nodeA.custo or 0) < (nodeB.custo or 0) then
                        return -1;
                elseif (nodeA.custo or 0) > (nodeB.custo or 0) then
                        return 1;
                else   
                        return utils.compareStringPtBr(nodeA.nome, nodeB.nome);
                end;               

                ]]>
        </event>
</recordList>



Created with the Personal Edition of HelpNDoc: Maximize Your PDF Protection with These Simple Steps