Histórico da Página
...
CONTEÚDO
- Visão Geral
- Procedures do ComponenteProcedures do Include ut-treeview.i (facilitador)
- Procedures do Componente
- Exemplo de Utilização
- Telas do TreeView
- 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ável | Tipo | Descrição |
---|---|---|
h-treeview | Handle | Contem o handle da instância do treeview |
h-Node | Char | Contem o pcKe do node selecionado |
c-codigo-node | Char | Contem o pcKe do node selecionado |
cImage | Char | Contem a imagem que será apresentada no node |
cFgColor | Char | Contem a cor de frente do node |
cFont | Char | Contem o código da fonte utilizada no node |
cExpClp | Char | Expande ou fecha o node |
Procedure | Parâmetros | Descrição | Exemplo/Utilização | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
pi-atualizaTreeview | Faz uma atualização/refresh do treeview. | RUN pi-atualizaTreeview. | |||||||||||||||||||||||||||||||||||||||||||||
pi-create-nodeaddNode |
| Cria um node no treeview. O pcOptn é uma lista de parâmetros que sao separados por chr(1). Valores válidos para o pcOtn:
| 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 |
| 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". | ||||||||||||||||||||||||||||||||||||||||||||
tvNodeEvent |
| 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 | ||||
---|---|---|---|---|
|
Card documentos | ||||
---|---|---|---|---|
|
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:
Procedure | Parâmetros | Descrição | Exemplo/Utilização | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
addNode * |
| Adiciona um node no treeview. Se o node for adicionado a um node pai, ele será o último filho. | DO ON ERROR UNDO, LEAVE: | ||||||||||||||||||||||||
applyEntry | Passar o parâmetro vazio ("") | Faz um entry no treeview | RUN applyEntry IN h-treeview (INPUT ""). | ||||||||||||||||||||||||
deleteNode |
| 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 |
| Expande o node e todos os filhos dele | RUN expandBranch IN h-treeview (c-codigo-node) NO-ERROR. | ||||||||||||||||||||||||
getFrameTreeview |
| Retorna o handle da frame do treeview | RUN getFrameTreeview IN h-treeview (OUTPUT hFrameTV). | ||||||||||||||||||||||||
getNodeDetails |
| Retorna detalhes de um node do treeview | RUN getNodeDetails IN h-treeview (c-codigo-node, OUTPUT hNdBf). MESSAGE DELETE OBJECT hNdBf. | ||||||||||||||||||||||||
initializeObject | Inicializa o treeview | RUN initializeObject IN h-treeview. | |||||||||||||||||||||||||
moveNode |
| 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 * |
|
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 | ||||
---|---|---|---|---|
|
Card documentos | ||||
---|---|---|---|---|
|
04. EXEMPLO DE UTILIZAÇÃO
Estamos disponibilizando um exemplo de um programa com thin-templates que utiliza esse componente de treeview.
View file name wmainten.w height 250
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:
...