Árvore de páginas

Versões comparadas

Chave

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

...

ProcedureParâmetrosDescriçãoExemplo/Utilização
pi-create-node
ParâmetrosTipoDescrição
pcKe (I)CharChave do node
pcKePar (I)CharPai do node
pcLabel (I)CharLabel do node
pcIco(I)CharÍcone do node
pcOptn (I)CharParâmetros do node



Cria um node no treeview.

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

Valores válidos para o pcOtn:

ParâmetroDescrição
expandedInicia 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
pcKe (I)CharChave do node a mover
pcFieldNames (I)CharLista de campos, exemplo: "lab,ico"
pcFieldValues (I)CharLista de valores separados por chr(1)
pcOptn (I)CharParâmetros do node

Atualiza o label, ícone ou a lista de 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.
pi-node-is-expanded
ParâmetroTipoDescrição
pcKe (I)CharChave do node

Retorno "YES" ou "NO" indicando se o node está expandido.

RUN pi-node-is-expanded 
(INPUT c-codigo-node).
IF RETURN-VALUE = "YES" THEN
 MESSAGE "O NÓ ESTÁ EXPANDIDO"
VIEW-AS ALERT-BOX.
ELSE
  MESSAGE "O NÓ NÃO ESTÁ EXPANDIDO"
VIEW-AS ALERT-BOX.
pi-atualizaTreeview
Faz uma atualização/refresh do TreeView.
RUN pi-atualizaTreeview.
tvNodeEvent
ParâmetroTipoDescrição
pcEvent (I)CharEvento que aconteceu
pcNodeKey (I)CharChave do node

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

Você não precisa chamar esta procedure diretamente, pois quem irá chamá-la é o TreeView.

Nesta procedure será alimentada a variável c-codigo-node com a chave do node selecionado.


pi-ClickTreeview

Procedure que será chamada pelo tvNodeEvent sempre que ocorrer um evento de "select" (click em um node) no TreeView.

Caso queria capturar este evento, esta Procedure deve ser definida no seu programa.

A variável c-codigo-node irá conter a chave do node selecionado.

PROCEDURE pi-ClickTreeView:
MESSAGE "Chave do Nó: " + c-codigo-node
VIEW-c-codigo-node
VIEW-AS ALERT-BOX.
END PROCEDURE.
pi-CtrlPopupTreeview
ParâmetroTipoDescrição
pcAction (I)Char

Ação do Popup:

"build" ou "choose"

pcEvent (I)CharItem do Popup escolhido
pcNodeKey (I)
Chave do node

Procedure utilizada para criar e controlar o Popup do Treeview.

Ela será chamada pelo tvNodeEvent em dois momentos:

1) Criação do Menu

Executada na momento em que o componente é criado. Passando como parâmetro o Ação "build". Neste momento a Procedure deverá retornar uma String com a lista dos itens que devem ser apresentados no Popup. A lista deve utilizar o separador "chr(1)" e deve ser composta por Label e Valor de cada item. Ex: "LabelItem1" + chr(1) + "valoritem1" + chr(1) + "LabelItem2" + chr(1) + "valoritem2". É possível acrescentar uma regra entre os itens, para isto, basta incluir um item com o Label "RULE" e o  valor igual a branco.

xxxxProcedure que será chamada pelo tvNodeEvent sempre que ocorrer um evento de "select" (click em um node) no TreeView.

xxxxCaso queria capturar este evento, esta Procedure deve ser definida no seu programa.

xxxxxA variável c-codigo-node irá conter a chave do node selecionado.


pi-GenericEventTreeview
ParâmetroTipoDescrição
pcEvent (I)CharEvento que aconteceu
pcNodeKey (I)CharChave do node

xxxxProcedure que será chamada pelo tvNodeEvent sempre que ocorrer um evento de "select" (click em um node) no TreeView.

xxxxCaso queria capturar este evento, esta Procedure deve ser definida no seu programa.

xxxA variável c-codigo-node irá conter a chave do node selecionado.


...

ProcedureParâmetrosDescriçãoExemplo/Utilização
addNode *
ParâmetrosTipoDescrição
pcKe (IpcKe)CharChave do node
pcKePar (IpcKePar)CharPai do node
pcLabel (IpcLabel)CharLabel do node
pcIco (IpcIco)CharÍcone do node
pcOptn (I)pcOptnCharParâ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 RUN addNode IN h-treeview4gltreeview
("n1","","node1","","") NO-ERROR.
  RUN RUN addNode IN h-treeview4gltreeview
("n2","","node2","","expanded") NO-ERROR.
  RUN addNode IN h-treeview4gltreeview
("n21","n2","node21","","") NO-ERROR.
  RUN addNode IN h-treeview4gltreeview
("n22","n2","node22","","expanded").
  RUN RUN addNode IN h-treeview4gltreeview
("n221","n22","node221","image/book02.bmp","").
  RUN RUN addNode IN h-treeview4gltreeview
("n222","n22","node222","image/book02.bmp","").
  RUN addNode IN h-treeview4gltreeview
("n3","","node3","present1.bmp","expanded").
  RUN addNode IN h-treeview4gltreeview
("n31","n3","node31","image/$.bmp","").
  RUN RUN addNode IN h-treeview4gltreeview
("n4","","node4","image/smile56.bmp","").
END.
applyEntryPassar o parâmetro vazio ("")Faz um entry no treeview
RUN applyEntry IN h-treeview4gltreeview
(INPUT "").
deleteNode
ParâmetroTipoDescrição
pcKe (IpcKe)CharChave do node
pcOptn (I)pcOptnCharParâmetros do node
Elimina um node de uma chave especificada.
RUN deleteNode IN h-treeview4gltreeview
(c-codigo-node, "refresh").
destroyObject
Elimina o treeview da memória.
IF  VALID-HANDLE(h-treeview4gltreeview) THEN DO:
    RUN destroyObject IN h-treeview4gltreeview.
    DELETE PROCEDURE h-treeview NO-ERROR4gltreeview.
END.
emptyTree
Zera o conteúdo da treeview.
RUN emptyTree IN h-treeview NO-ERROR4gltreeview.
enableObject
Habilita o treeview
RUN enableObject IN h-treeview NO-ERROR4gltreeview.
expandBranch
ParâmetroTipoDescrição
pcKe (I)pcKeCharChave do node
Expande o node e todos os filhos dele
RUN expandBranch IN h-treeview (c-codigo-node) NO-ERROR.
RUN pi-atualizaTreeview.
Obs: // Ao fazer o expandBranch não esqueça de fazer
// o Refresh para atualizar o treeview na tela para atualizar o treeview na tela.
RUN expandBranch IN h-4gltreeview
(c-codigo-node).
RUN pi-atualizaTreeview.

getFrameTreeview
ParâmetroTipoDescrição
hFrame (O)hFrameHandleHandle da frame do treeview
Retorna o handle da frame do treeview
RUN getFrameTreeview IN h-treeview4gltreeview 
(OUTPUT hFrameTV).
getNodeDetails
ParâmetroTipoDescrição
pcKe (IpcKe)CharChave do node
Retorna detalhes de um node do treeview
RUN getNodeDetails IN h-treeview4gltreeview
(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
   "parent:" hNdBf:BUFFER-FIELD("par"):BUFFER-VALUE SKIP
       "prev-siblingsib:" hNdBf:BUFFER-FIELD("pre"):BUFFER-VALUE SKIP
    "next-siblingsib:" hNdBf:BUFFER-FIELD("nex"):BUFFER-VALUE SKIP
    "expandedexpand:" 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-treeview4gltreeview.
moveNode
ParâmetroTipoDescrição
pcKe (IpcKe)CharChave do node a mover
pcToKe (IpcToKe)CharMover para o node
pcMode (IpcMode)CharModos possíveis: after, before, parent
pcOptn (I)pcOptnCharOpçã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-treeview4gltreeview 
(c-codigo-node, c-codigo-node-pai, "after", "refresh") NO-ERROR.

updateNode *


ParâmetroTipoDescrição
pcKe (IpcKe)CharChave do node a mover
pcFieldNames (IpcFieldNames)CharList de campos, exemplo: "lab,ico"
pcFieldValues (IpcFieldValues)CharLista de valores separados por chr(1)
pcOptn (IpcOptn)CharParâmetros do node
Atualiza o label, ícone ou a lista de opções de um determinado node.
RUN updateNode IN h-treeview 4gltreeview
(c-codigo-node, "", "", cFgColor) NO-ERROR.

* = Procedures chamadas pelo facilitador

...

Bloco de código
titleExemplo de utilização do TreeView
linenumberstrue
collapsetrue
// definition do treeview
{utp/ut-4gltreeview.i}

// carregando o componente treeview
PROCEDURE afterDisplayFields :
   IF NOT VALID-HANDLE(h-4gltreeview) THEN DO:
      // instancia o treeview
      RUN utp/ut-4gltreeview.w PERSISTENT SET h-4gltreeview.
   
      // Indica a Frame "Pai" do componente
      RUN setParentFrame IN h-4gltreeview (INPUT FRAME fPage0:HANDLE).

      // inicializa o treeview
      RUN initializeObject IN h-4gltreeview.
   
      // faz a subscricao do evento de click dentro do treeview
      SUBSCRIBE TO "tvNodeEvent" IN h-4gltreeview.

      // reposiciona o treeview 
      RUN repositionObject IN h-4gltreeview ( 6.35 , 2.00 ) NO-ERROR.

      // ajusta o tamanho do treeview 
      RUN resizeObject IN h-4gltreeview ( 10.70 , 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-4gltreeview (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-4gltreeview) THEN DO:
      RUN destroyObject IN h-4gltreeview.
      DELETE PROCEDURE h-4gltreeview NO-ERROR.
   END.     

   RETURN "OK":U.
END PROCEDURE.

...