Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

CONTEÚDO

  1. Visão Geral
  2. Procedures do ComponenteProcedures do Include ut-treeview.i (facilitador)
  3. Procedures do Componente
  4. Exemplo de Utilização
  5. Telas do TreeView
  6. Documentação Complementar do Componente

...

  • Performático, onde testamos mais de 5000 nós e não houve perda de performance.
  • Temos um include ut-treeview.i que possui algumas procedures "facilitadoras" para manipulação do TreeView.
  • Feito totalmente em progress.
  • Possuimos o código fonte, onde podemos customizá-lo de acordo com as nossas necessidades.



02. PROCEDURES DO

...

O componente TreeView.w possui um código altamente documentado que pode ser utilizado.

...

INCLUDE ut-treeview.i (facilitador)

Foi disponibilizado o include ut-treeview-i para facilitar a utilização do TreeView, que possui as seguintes variáveis e procedures:

VariávelTipoDescrição
h-treeviewHandleContem o handle da instância do treeview
h-NodeCharContem o pcKe do node selecionado
c-codigo-nodeCharContem o pcKe do node selecionado
cImageCharContem a imagem que será apresentada no node
cFgColorCharContem a cor de frente do node
cFontCharContem o código da fonte utilizada no node
cExpClpCharExpande ou fecha o node
ProcedureParâmetrosDescriçãoExemplo/Utilização
pi-atualizaTreeview
Faz uma atualização/refresh do treeview.
RUN pi-atualizaTreeview.
pi-create-nodeaddNode

ParâmetrosTipoDescrição
IpcKeCharChave do node
IpcKeParCharPai do node
IpcLabelCharLabel do node
IpcIcoCharIcone do node
IpcOptnCharParâmetros do node



Cria um node no treeview.

O pcOptn é uma lista de parâmetros que sao separados por chr(1).

Valores válidos para o pcOtn:

ParâmetroDescrição
expendedInicia o node expendido
collapsedInicia o node fechado (não expandido) - opção default
selectedSeleciona o node ate o próximo refresh
refreshRealiza o refresh do treeview
AutoSort=yes/noLiga ou desliga a ordenação do treeview
font=nDefine uma fonte para o node
fgcolor=nDefine uma cor de frente para o node
bgcolor=nDefine uma cor de fundo para o node
tooltip=xxxDefine um help para o node
DO ON ERROR UNDO, LEAVE:
  RUN pi-create-node ("n1","","node 1","","") NO-ERROR.
  RUN pi-create-node ("n2","","node 2","","expanded") NO-ERROR.
END.
pi-update-node

ParâmetroTipoDescrição
IcChaveCharChave do node a mover
IcFieldNamesCharList de campos, exemplo: "lab,ico"
IcFieldValuesCharLista de valores separados por chr(1)
IcParamCharParâmetros do node

Atualiza o label, icone ou a lista de opcoes de um determinado node.

Para remover um item do pcOptn existente, coloque "!" na frente da opção, conforme o exemplo abaixo:

pcOptn="!font"

A opção acima removerá o fonte definido para o node.

ASSIGN cFgColor = "font=1".
RUN pi-update-node (c-codigo-node, "", "", cFgColor) NO-ERROR.
tvNodeEvent

ParâmetroTipoDescrição
IpcEventCharEvento que aconteceu
IpcNodeKeyCharChave do node

Procedure auxiliar que é assinada no treeview, onde todos os eventos que ocorrerem no treeview chamarão esta procedure.

Voce não precisa chamar esta procedure diretamente, pois quem irá chamá-la é o treeview.

Nesta procedure serão alimentados as variáveis c-codigo-node e h-node com o pcNodeKey, que é a chave do node selecionado.


pi-ClickTreeview
Esta é uma procedure que é chamada pelo tvNodeEvent e deve ser criada no seu programa, pois neste ponto que você deverá utilizar o c-codigo-node e h-node, que é a chave do node, e fazer os seus procedimentos necessários para atualizar frames e utilizar o node selecionado.


Card documentos
InformacaoVocê tem que criar a pi-ClickTreeview quando utilizar o ut-treeview.i, senão ocorrerá erro durante a execução do seu programa.
TituloIMPORTANTE!


Card documentos
InformacaoNão se esqueça de eliminar o treeview da memória no final do seu programa!!!
TituloIMPORTANTE!



03. PROCEDURES DO COMPONENTE

O componente TreeView.w possui um código altamente documentado que pode ser utilizado.

Aconselhamos utilizar o include facilitador, pois ele possui variáveis e algumas procedures que vão facilitar o desenvolvimento.

Abaixo temos as principais procedures do TreeView:

ProcedureParâmetrosDescriçãoExemplo/Utilização
addNode *

ParâmetrosTipoDescrição
IpcKeCharChave do node
IpcKeParCharPai do node
IpcLabelCharLabel do node
IpcIcoCharIcone do node
IpcOptnCharParâmetros do node

Adiciona um node no treeview.

Se o node for adicionado a um

node pai, ele será o último filho.

DO ON ERROR UNDO, LEAVE:
  RUN addNode IN h-treeview ("n1","","node 1","","") NO-ERROR.
  RUN addNode IN h-treeview ("n2","","node 2","","expanded") NO-ERROR.
  RUN addNode IN h-treeview ("n21","n2","node 21","","") NO-ERROR.
  RUN addNode IN h-treeview ("n22","n2","node 22","image/treeview/book02.bmp","expanded").
  RUN addNode IN h-treeview("n221","n22","node 221","image/treeview/book02.bmp","").
  RUN addNode IN h-treeview ("n222","n22","node 222","image/treeview/book02.bmp","").
  RUN addNode IN h-treeview ("n3","","node 3","image/treeview/present1.bmp","expanded").
  RUN addNode IN h-treeview ("n31","n3","node 31","image/treeview/$.bmp","").
  RUN addNode IN h-treeview ("n4","","node 4","image/treeview/smile56.bmp","").
END.
applyEntryPassar o parâmetro vazio ("")Faz um entry no treeview
RUN applyEntry IN h-treeview (INPUT "").
deleteNode

ParâmetroTipoDescrição
IpcKeCharChave do node
IpcOptnCharParâmetros do node
Elimina um node de uma chave especificada.
RUN deleteNode IN h-treeview (c-codigo-node, "refresh").
destroyObject
Elimina o treeview da memória.
IF VALID-HANDLE(h-treeview) THEN DO:
       RUN destroyObject IN h-treeview.
       DELETE PROCEDURE h-treeview NO-ERROR.
END.
emptyTree
Zera o conteúdo da treeview.
RUN emptyTree IN h-treeview NO-ERROR.
enableObject
Habilita o treeview
RUN enableObject IN h-treeview NO-ERROR.
expandBranch

ParâmetroTipoDescrição
IpcKeCharChave do node
Expande o node e todos os filhos dele
RUN expandBranch IN h-treeview (c-codigo-node) NO-ERROR.
getFrameTreeview

ParâmetroTipoDescrição
OhFrameHandleHandle da frame do treeview
Retorna o handle da frame do treeview
RUN getFrameTreeview IN h-treeview (OUTPUT hFrameTV).
getNodeDetails

ParâmetroTipoDescrição
IpcKeCharChave do node
Retorna detalhes de um node do treeview
RUN getNodeDetails IN h-treeview (c-codigo-node, OUTPUT hNdBf).
MESSAGE 
    "id:" hNdBf:BUFFER-FIELD("id"):BUFFER-VALUE SKIP
    "label:" hNdBf:BUFFER-FIELD("lab"):BUFFER-VALUE SKIP
    "ico:" hNdBf:BUFFER-FIELD("ico"):BUFFER-VALUE SKIP
    "level:" hNdBf:BUFFER-FIELD("level"):BUFFER-VALUE SKIP
    "param:" hNdBf:BUFFER-FIELD("par"):BUFFER-VALUE SKIP
    "prev-sibling:" hNdBf:BUFFER-FIELD("pre"):BUFFER-VALUE SKIP
    "next-sibling:" hNdBf:BUFFER-FIELD("nex"):BUFFER-VALUE SKIP
    "expanded:" hNdBf:BUFFER-FIELD("expanded"):BUFFER-VALUE SKIP
    "optn:" hNdBf:BUFFER-FIELD("optn"):BUFFER-VALUE
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
DELETE OBJECT hNdBf.
initializeObject
Inicializa o treeview
RUN initializeObject IN h-treeview.
moveNode

ParâmetroTipoDescrição
IpcKeCharChave do node a mover
IpcToKeCharMover para o node
IpcModeCharModos possíveis: after, before, parent
IpcOptnCharOpção possível: refresh
Move um node origem como filho de outro node destino. Caso o pcMode = "parent" e o node destino seja em branco, ele jogara o node origem como o último node do nível 0.
RUN moveNode IN h-treeview (c-codigo-node, c-codigo-node-pai, "after", "refresh") NO-ERROR.

updateNode *



ParâmetroTipoDescrição
IpcKeCharChave do node a mover
IpcFieldNamesCharList de campos, exemplo: "lab,ico"
IpcFieldValuesCharLista de valores separados por chr(1)
IpcOptnCharParâmetros do node

Para remover um item do pcOptn existente, coloque "!" na frente da opção, conforme o exemplo abaixo:

pcOptn="!font"

A opção acima removerá o fonte definido para o node.

Atualiza o label, icone ou a lista de opcoes de um determinado node.
RUN updateNode IN h-treeview (c-codigo-node, "", "", cFgColor) NO-ERROR.

03. PROCEDURES DO INCLUDE ut-treeview.i

Foi disponibilizado o include ut-treeview-i para facilitar a utilização do TreeView, onde possui das seguintes variaveis e procedures:

...

RUN pi-atualizaTreeview.

...

Adiciona um node no treeview.

Esta procedure chama a addNode.

...

DO ON ERROR UNDO, LEAVE:
  RUN pi-create-node ("n1","","node 1","","") NO-ERROR.
  RUN pi-create-node ("n2","","node 2","","expanded") NO-ERROR.
END.

...

Atualiza o label, icone ou a lista de opcoes de um determinado node.

Esta procedure chama a updateNode.

...

RUN pi-update-node (c-codigo-node, "", "", cFgColor) NO-ERROR.

...

Procedure auxiliar que é assinada no treeview, onde todos os eventos que ocorrerem no treeview chamarão esta procedure.

Voce não precisa chamar esta procedure diretamente, pois quem irá chamá-la é o treeview.

Nesta procedure serão alimentados as variáveis c-codigo-node e h-node com o pcNodeKey, que é a chave do node selecionado.

* = Procedures chamadas pelo facilitador


...

Card documentos
InformacaoVocê tem que criar a pi-ClickTreeview quando utilizar o ut-treeview.i, senão ocorrerá erro durante a execução do seu programa.
TituloIMPORTANTE!

Card documentos
InformacaoNão se esqueça de eliminar o treeview da memória no final do seu programa!!!
TituloIMPORTANTE!

04. EXEMPLO DE UTILIZAÇÃO

Estamos disponibilizando um exemplo de um programa com thin-templates que utiliza esse componente de treeview.

View file
namewmainten.w
height250


Bloco de código
// iniciandodefinition o treeviewarea
{utp/ut-treeview.i}

// procedure area
PROCEDURE AfterDisplayFields :
    IF  NOT VALID-HANDLE(h-treeview) THEN DO:
        // instancia o treeview
        RUN utp/ut-treeview.w PERSISTENT SET h-treeview.

       // inicializa o treeview   
       RUN initializeObject IN h-treeview.
   
       SUBSCRIBE// faz a subscricao do evento de click dentro do treeview
        SUBSCRIBE TO "tvNodeEvent" IN h-treeview.
   
       // repositiona o treeview
       RUN repositionObject IN h-treeview ( 2.65 , 1.30 ) NO-ERROR.

       // ajusta o tamanho do componente
       RUN resizeObject IN h-treeview ( 14.35 , 28.00 ) NO-ERROR.
    END.

     // carrega os itens do treeview
    RUN pi-loadNodes.
    
    // faz o refresh do treeview
    RUN pi-atualizaTreeview IN THIS-PROCEDURE.   

    // coloca o cursor no treeview
    RUN applyEntry IN h-treeview (INPUT ""). 
END PROCEDURE.

// esta procedure sera executada toda vez que ocorrer um evento de click em um determinado nó
PROCEDURE pi-ClickTreeView :
    MESSAGE c-codigo-node VIEW_AS ALERT-BOX.
END PROCEDURE.

// retira o treeview da memoria
PROCEDURE beforeDestroyInterface :
   IF VALID-HANDLE(h-treeview) THEN DO:
      RUN destroyObject IN h-treeview.
      DELETE PROCEDURE h-treeview NO-ERROR.
   END.

   RETURN "OK":U.
END PROCEDURE.


Programas de exemplo no produto que estão utilizando este componente:

...