Árvore de páginas

Versões comparadas

Chave

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

...

Este componente TreeView, feito em progress, tem como objetivo substituir o componente TreeView fornecido pelo pela Microsoft (mscomctrl.ocx), pois este OCX não possui compatibilidade com o OpenEdge 64Bits.

Ele é um TreeView que possui as seguintes características:

  • 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 Possuímos o código fonte, onde podemos customizá-lo de acordo com as nossas necessidades.

...

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

...

ProcedureParâmetrosDescriçãoExemplo/Utilização
pi-atualizaTreeview
Faz uma atualização/refresh do treeview.
RUN pi-atualizaTreeview.
pi-create-node

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



Cria um node no treeview.

O pcOptn é uma lista de parâmetros que sao são 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 Lista de campos, exemplo: "lab,ico"
IcFieldValuesCharLista de valores separados por chr(1)
IcParamCharParâmetros do node

Atualiza o label, icone ícone ou a lista de opcoes opções 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 Você 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.

...

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

ParâmetrosTipoDescrição
IpcKeCharChave do node
IpcKeParCharPai do node
IpcLabelCharLabel do node
IpcIcoCharIcone Ícone 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","","node1","","") NO-ERROR.
  RUN addNode IN h-treeview ("n2","","node2","","expanded") NO-ERROR.
  RUN addNode IN h-treeview ("n21","n2","node21","","") NO-ERROR.
  RUN addNode IN h-treeview ("n22","n2","node22","","expanded").
  RUN addNode IN h-treeview ("n221","n22","node221","image/book02.bmp","").
  RUN addNode IN h-treeview ("n222","n22","node222","image/book02.bmp","").
  RUN addNode IN h-treeview ("n3","","node3","present1.bmp","expanded").
  RUN addNode IN h-treeview ("n31","n3","node31","image/$.bmp","").
  RUN addNode IN h-treeview ("n4","","node4","image/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 RUN destroyObject IN h-treeview.
        DELETE 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
Atualiza o label, icone ícone ou a lista de opcoes opções de um determinado node.
RUN updateNode IN h-treeview 
(c-codigo-node, "", "", cFgColor) NO-ERROR.

...