Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Atributos, Métodos e Procedures
  3. Exemplo de Utilização
  4. Dicas de Conversão do OCX para o TotvsTreeList
  5. Tela do TotvsTreeList


01. VISÃO GERAL

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

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

  • Performático, onde testamos mais de 5000 nós e não houve perda de performance, pois utiliza um browse.
  • Feito totalmente em 4GL, sendo uma classe progress.
  • Possuímos o código fonte, onde podemos customizá-lo de acordo com as nossas necessidades.
  • Não possui imagem
  • Permite a adição de colunas extras
  • Aceita comandos de teclado para expandir ou recolher os itens filhos, como:
    • "*" - Expande todos os itens do TreeList
    • "/" - Recolhe todos os itens do TreeList
    • "+" - Expande o próximo nível do node selecionado
    • "-" - Recolhe todos os filhos do node selecionado



02. ATRIBUTOS, MÉTODOS E PROCEDURES

Foi disponibilizado no TotvsTreeList os seguintes atributos:

AtributoTipoDescriçãoExemplo/Utilização
parentFrameHandleHandle da frame pai que vai receber o TreeList.
// cria a instancia do TreeList
oTreeList = NEW TOTVSTreeList().
oTreeList:parentFrame = FRAME default-frame:HANDLE.
parentProgHandle

Handle do programa pai, que instancionou o TreeList.

É utilizado para executar a procedure browseEvent, no programa pai, quando ocorrer algum evento no TreeList.

oTreeList:parentProg = THIS-PROCEDURE.
rowDecimalEspecifica a linha em que o TreeList será apresentado.
oTreeList:row = 2.
colDecimalEspecifica a coluna em que o TreeList será apresentado.
oTreeList:col = 5.
widthDecimalEspecifica o tamanho do TreeList.
oTreeList:width = 100.
heightDecimalEspecifica a altura do TreeList.
oTreeList:height = 12.
currentCodeCharacter

Contem o código do node corrente/selecionado.

Ele é utilizado para obter informações e ações sobre o item selecionado.

MESSAGE "Node selecionado:" oTreeList:currentCode SKIP
"Conteudo cod_empres:"
oTreeList:getDataChar(oTreeList:currentCode, "cod_empres")
VIEW-AS ALERT-BOX.
browseTreeListHandle

Retorna o handle do Browse do TreeList.

Utilize este recurso somente quando quiser manipular diretamente o Browse do TreeList.

OBS: Muito cuidado ao tentar manipular diretamente este Browse.

oTreeList:browseTreeList:sensitive = FALSE.
MétodosParâmetrosDescriçãoExemplo/Utilização
initialize
Inicializa o componente. Este método deverá ser chamado após ser adicionado todas as colunas do TreeList, após inicializado, a adição de colunas não será permitida.
oTreeList:initialize().
setSize
ParâmetrosTipo

Descrição

deRow (I)DecimalLinha
deCol (I)Decimal

Coluna

deWidth (I)Decimal

Tamanho

deHeight (I)DecimalAltura
Define a posição, tamanho e altura do TreeList.
// define o tamanho do componente
oTreeList:setSize( 3, // row
5, // col
100, // width
10). // height
showInvalidValues
ParâmetroTipo

Descrição

lShow (I)Logical

Mostra valores

inválidos ?

Indica se deve ou não apresentar valores inválidos no Treelist (conteúdo igual a nulo "?").

Se for configurado para não mostrar, eles serão apresentados como: "".

O valor padrão é "TRUE".

// mostra valores invalidos
oTreeList:showInvalidValues(FALSE).
addColumn
ParâmetrosTipoDescrição

cColumnId (I)

Char

Nome da

coluna

cType (I)Char

Tipo da

coluna

iExt (I)Int

Extenção

(Extent)

cFormat (I)Char

Formato da

coluna

cInitial (I)CharValor Inicial
cLabel (I)Char

Label da

coluna

Adiciona uma coluna no TreeList.

Sugerimos a não utilização do tipo Extent, para isso informar o valor "0". Esta sugestão é devido ao fato de não ser possível manipular estas colunas do tipo Extent, como por exemplo, não é possível definir o label, o tamanho, o tipo de dados...

// adiciona colunas extras
oTreeList:AddColumn("cod_empres", // nome coluna
"character", // type
0, // extent
"x(05)", // format
"", // initial
"Empresa"). // Label

oTreeList:AddColumn("vlCalculo",  // nome coluna
"decimal",    // type
0,            // extent
">>>,>>9.99", // format
"0",          // initial
"Valor").     // label
addColumn
ParâmetrosTipoDescrição

cColumnId (I)

Char

Nome da

coluna

cType (I)Char

Tipo da

coluna

iExt (I)Int

Extenção

(Extent)

cFormat (I)Char

Formato da

coluna

cInitial (I)CharValor Inicial
cLabel (I)Char

Label da

coluna

lInternal (I)Logical

Coluna

Interna (YES)

ou

Externa (NO)

Adiciona uma coluna no TreeList, onde pode ser especificado se a coluna será apresentada no Browse ou não. As colunas do tipo INTERNAS, NÃO serão apresentadas no Browse e servem apenas para trabalho interno.

As colunas do tipo EXTERNO são apresentadas no Browse do TreeList e podem ser "escondidas" a qualquer momento com o método hideColumn.

Sugerimos a não utilização do tipo Extent, para isso informar o valor "0". Esta sugestão é devido ao fato de não ser possível manipular estas colunas do tipo Extent, como por exemplo, não é possível definir o label, o tamanho, o tipo de dados...

oTreeList:AddColumn("dtCalculo",  // nome coluna
"date", // type
0, // extent
"99/99/9999", // format
"01/09/2022", // initial
"Calculo", // label
TRUE). // Internal?
setColumnLabel
ParâmetrosTipo

Descrição

cColumnId (I)

Char

Nome da

coluna

cLabel (I)Char

Label da

coluna

Define o Label de uma determinada coluna.
oTreeList:setColumnLabel("cod_empres", // nome col
"Empresa"). // label
getColumnLabel
ParâmetroTipo

Descrição

cColumnId (I)Char

Nome da

coluna

cLabel (O)Char

Label da

coluna

Retorna o Label de uma determinada coluna.
MESSAGE oTreeList:getColumnLabel("cod_usuar")
    VIEW-AS ALERT-BOX.
setColumnSize
ParâmetrosTipo

Descrição

cColumnId (I)Char

Nome da

coluna

deSize (I)Decimal

Tamanho

Define o tamanho de uma determinada coluna.
oTreeList:setColumnSize("cEstrutura", // nome coluna
50). // tamanho
getColumnSize
ParâmetroTipo

Descrição

cColumnId (I)Char

Nome da

coluna

deSize (O)Decimal

Tamanho

Retorna o tamanho de uma determinada coluna.
MESSAGE oTreeList:getColumnSize("cod_empres")
  VIEW-AS ALERT-BOX.
moveColumn
ParâmetroTipo

Descrição

cColumnId (I)Char

Nome da

coluna

iNewPos (I)Integer

Nova posição

Especifica uma nova posição para uma determinada coluna dentro do TreeList.


oTreeList:moveColumn("cod_empres", // nome da coluna
5). // Nova posição da coluna
setLineBgColor
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

iColor (I)Integer

Cor

Define a cor de fundo de um determinado node.

O número da cor corresponde a tabela de Cores do Progress (de 1 a 15), ou números adicionais configurados na sessão (.ini).

oTreeList:setLineBgColor("cod55", // codigo node
4). // cor de fundo
getLineBgColor
ParâmetroTipo

Descrição

cNodeId (I)CharCódigo do node
iColor (O)Integer

Cor

Retorna o número da cor de fundo de um determinado node.
MESSAGE oTreeList:getLineBgColor("cod55")
  VIEW-AS ALERT-BOX.
setLineFgColor
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

iColor (I)Integer

Cor

Define a cor de frente de um determinado node.

O número da cor corresponde a tabela de Cores do Progress (de 1 a 15), ou números adicionais configurados na sessão (.ini).

oTreeList:setLineFgColor("cod55", // codigo node
12). // cor de frente
getLineFgColor
ParâmetroTipo

Descrição

cNodeId (I)CharCódigo do node
iColor (O)Integer

Cor

Retorna o número da cor de fundo de um determinado node.
MESSAGE oTreeList:getLineFgColor("cod55") 
  VIEW-AS ALERT-BOX.
setLineFont
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

iFont (I)Integer

Fonte

Define a fonte de um determinado node.

O número da fonte corresponde a tabela de Fontes do Progress (de 1 a 7), ou números adicionais configurados na sessão (.ini).

oTreeList:setLineFont("cod55", // codigo node
2). // fonte
getLineFont
ParâmetroTipo

Descrição

cNodeId (I)CharCódigo do node
iFont (O)Integer

Fonte

Retorna o número da fonte de um determinado node.
MESSAGE oTreeList:getLineFont("cod55") 
  VIEW-AS ALERT-BOX.
addNode
ParâmetrosTipoDescrição
cParentId (I)CharCódigo do Pai
cNodeId (I)Char

Código do node

cLabel (I)CharLabel do node

Adiciona um node dentro do TreeList.

//              cParentId, cNodeId, cNodeLabel
oTreeList:addNode( "", "cod00", "Tataravo0").
oTreeList:addNode("cod00", "cod11", "Avo1").
oTreeList:addNode("cod11", "cod55", "Pai1").
oTreeList:addNode("cod55", "cod66", "Filho1").
oTreeList:addNode("cod66", "cod22", "Neto1").
oTreeList:addNode("cod00", "cod77", "Pai2").
oTreeList:addNode("cod77", "cod33", "Filho2").
setData
ParâmetrosTipoDescrição
cNodeId (I)Char

Chave do

node

cColumnId (I)Char

Nome da

coluna

pValue (I)

Char

Decimal

Integer

Date

Logical

Valor a ser

gravado

Define o valor de uma determinada coluna de um node.

O valor pode, ser dos seguintes tipos:

  • Character
  • Decimal
  • Integer
  • Date
  • Logical



oTreeList:setData("cod40",      // codigo node
"cod_empres", // nome coluna
"150"). // valor

oTreeList:setData("cod66", // codigo node
"vlCalculo", // nome coluna
250.3). // valor
getDataChar
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

cColumnId (I)Char

Nome da

coluna

cValue (O)Char

Valor

Retorna o valor de uma coluna CHARACTER do node.
MESSAGE oTreeList:getDataChar("cod55",      // codigo node
"cod_empres") // nome coluna
      VIEW-AS ALERT-BOX.
getDataDec
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

cColumnId (I)Char

Nome da

coluna

deValue (O)Decimal

Valor

Retorna o valor de uma coluna DECIMAL do node.
MESSAGE oTreeList:getDataDec("cod24",      // codigo node
"vlr_mensal") // nome coluna
    VIEW-AS ALERT-BOX.
getDataInt
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

cColumnId (I)Char

Nome da

coluna

iValue (O)Integer

Valor

Retorna o valor de uma coluna INTEGER do node.
MESSAGE oTreeList:getDataInt("cod51",        // codigo node
"num_contador") // nome coluna
    VIEW-AS ALERT-BOX.
getDataDate
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

cColumnId (I)Char

Nome da

coluna

dtValue (O)Date

Valor

Retorna o valor de uma coluna DATE do node.
MESSAGE oTreeList:getDataDate("cod67",     // codigo node
"dtCalculo") // nome coluna
    VIEW-AS ALERT-BOX.
getDataLog
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

cColumnId (I)Char

Nome da

coluna

lValue (O)Logical

Valor

Retorna o valor de uma coluna LOGICAL do node.
MESSAGE oTreeList:getDataLog("cod12",        // codigo node
"log_executa") // nome coluna
    VIEW-AS ALERT-BOX.
clearData
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

cColumnId (I)Char

Nome da

coluna

Limpa o valor de uma determinada coluna de um node. Atribui a valor nulo ("?").
oTreeList:clearData("cod40",       // codigo node
"cod_empres"). // nome coluna
emptyTreeList
Elimina todos os nodes do TreeList.
oTreeList:emptyTreeList().
applyEntry



Executa um APPLY ENTRY no TreeList, jogando o foco para ele.

oTreeList:applyEntry().
refresh
Atualiza os dados do Browse do TreeList.
oTreeList:refresh().
browseEvent
ParâmetrosTipoDescrição
cEvent (I)Char

Evento que foi

disparado

cNodeId (I)CharCódigo do node

Este método é executado sempre que um evento ocorrer no TreeList. Ele também executará uma procedure interna no programa pai, que possua o mesmo nome, assinatura e tenha sido especificado o parentProg.

Eventos que são tratados no TreeList:

  • mouse-select-dblclick
  • value-changed
  • selected
  • "*"  (expande todo o TreeList)
  • "/"  (recolhe todo o TreeList)
  • "+" (expande os filhos do node) 
  • "-"  (recolhe os filhos do node)
// cria o TreeList
oTreeList = NEW TOTVSTreeList().
oTreeList:parentProg = THIS-PROCEDURE.

PROCEDURE browseEvent :
DEFINE INPUT PARAMETER cEvent  AS CHAR NO-UNDO.
DEFINE INPUT PARAMETER cNodeId AS CHAR NO-UNDO.
    
MESSAGE
oTreeList:getDataChar(cNodeId, "cod_empres")
SKIP
    oTreeList:getDataChar(cNodeId, "cod_usuar")
SKIP
    oTreeList:getDataDate(cNodeId, "dtCalculo")
    VIEW-AS ALERT-BOX.
END PROCEDURE.
enableTreeList
ParâmetroTipo

Descrição

lEnable (I)LogicalHabilita?
Habilita ou desabilita o TreeList.
// desabilita o TreeList
oTreeList:enableTreeList(FALSE).

// habilita o TreeList
oTreeList:enableTreeList(TRUE).
hideTreeList
ParâmetroTipo

Descrição

lHide (I)LogicalEsconde?
Esconde ou mostra o TreeList.
// esconde o TreeList
oTreeList:hideTreeList(TRUE).

// mostra o TreeList
oTreeList:hideTreeList(FALSE).
hideColumn
ParâmetrosTipo

Descrição

cColumnId (I)Char

Código do

coluna

lHide (I)Logical

Esconde?

Esconde ou mostra uma coluna EXTERNA no TreeList.
// esconde a coluna
oTreeList:hideColumn("cod_empres", // nome coluna
TRUE). // esconde ou mostra coluna

// mostra a coluna
oTreeList:hideColumn("cod_empres", // nome coluna
FALSE). // esconde ou mostra coluna
selectLine
ParâmetroTipo

Descrição

cNodeId (I)CharCódigo do node

Seleciona um node no TreeList.

Dispara o evento de selected.

oTreeList:selectLine("cod55").
expandeNode
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do

node

lShow (I)Logical

TRUE=Expande

FALSE=Recolhe

Expande ou recolhe um determinado node.
// serão apresentados os filhos deste node, 
// mas os netos não serão apresentados.
oTreeList:expandNode("cod55", // codigo node
TRUE). // expande ou recolhe filhos
expandAll
ParâmetroTipo

Descrição

cNodeId (I)CharCódigo do node
Expande toda a árvore de um determinado node, a partir do código dele.
oTreeList:expandAll("cod55").
expandAll
Expande todos os nodes do TreeList.
oTreeList:expandAll().
collapseAll
Recolhe todos os nodes do TreeList.
oTreeList:collapseAll().
hasNode
ParâmetroTipo

Descrição

lHas (O)LogicalPossui nodes?
Retorna se existe nodes no TreeList.
MESSAGE oTreeList:hasNode()
  VIEW-AS ALERT-BOX.
hasChildren
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do node

Retorna se existe algum filho para um determinado node.
MESSAGE oTreeList:hasChildren("cod22")
      VIEW-AS ALERT-BOX.
countChildren
ParâmetrosTipoDescrição
cNodeId (I)CharCódigo do node
Retorna o número de filhos do próximo nível do node selecionadoMESSAGE oTreeList:countChildren("cod22")
      VIEW-AS ALERT-BOX.
deleteAllChildren
ParâmetrosTipo

Descrição

cNodeId (I)Char

Código do node

Elimina todos os filhos de um determinado node.
oTreeList:deleteAllChildren("cod22").
getColumnList
ParâmetroTipo

Descrição

lColList (O)CharColunas
Retorna uma lista, separada por virgulas, das colunas EXTERNAS do TreeList (que são as colunas que aparecem no Browse).
ASSIGN cColList = oTreeList:getColumnList().
// Resultado: "cEstrutura,cod_empres,cod_usuar"
setNodeLabel
ParâmetroTipo

Descrição

cNodeId (I)CharCódigo do node
cLabel (I)CharLabel do node
Define o label de um determinado node.
oTreeList:setColumnLabel("cod55",   // codigo node
"Filho1"). // novo label
getNodeLabel
ParâmetroTipo

Descrição

cNodeId (I)CharCódigo do node
cLabel (O)CharLabel do node
Retorna o label de um determinado node.
MESSAGE oTreeList:getColumnLabel("cod55")
    VIEW-AS ALERT-BOX.
getFirstNode
Retorna o código do primeiro node.MESSAGE  "Primeiro" oTreeList:getFirstNode()  VIEW-AS ALERT-BOX .
getlastNode
Retorna o código do último node.MESSAGE  "Último" oTreeList:getlastNode()  VIEW-AS ALERT-BOX .
getNextNode
Retorna o código do próximo node a partir do atual.

MESSAGE  "Próximo " oTreeList:getNextNode()  VIEW-AS ALERT-BOX .

getPrevNode
Retorna o código do node anterior a partir do atual.MESSAGE  "Anterior" oTreeList:getprevNode(cRef)  VIEW-AS ALERT-BOX .



IMPORTANTE!

Não se esqueça de eliminar o TreeList da memória no final do seu programa!!!



03. EXEMPLO DE UTILIZAÇÃO

Estamos disponibilizando um exemplo de um programa utilizando o componente TotvsTreeList.


TreeListTest.w exemplo-TotvsTreeList.p


Exemplo de utilização do TreeList
USING com.totvs.framework.utp.treelist.*.

DEFINE VARIABLE oTreeList AS TotvsTreeList NO-UNDO.

// alguma logica de negocio e criacao de frame
...

// cria o treelist
oTreeList = NEW TotvsTreeList().
oTreeList:parentFrame = FRAME default-frame:HANDLE.
oTreeList:parentProg = THIS-PROCEDURE.
    
// adiciona as colunas extras
// oTreeList:AddColumn("nome_da_coluna", "type", extent, "format", "initial", "label", Interno?).
oTreeList:AddColumn("cod_empresa", "character", 0, "x(05)", "", "Empresa").
oTreeList:AddColumn("cod_usuario", "character", 0, "x(15)", "", "Usuario").
oTreeList:AddColumn("dtCalculo", "date", 0, "99/99/9999", "01/09/2022", "Calculo", FALSE).

// define o tamanho do componente
oTreeList:setSize(2, 4, 107, 10).

// inicializa o treelist
oTreeList:initialize().
    
// altera o nome e o tamanho da coluna que mostra os nodes
oTreeList:setColumnLabel("cEstrutura", "Tree").
oTreeList:setColumnSize("cEstrutura", 50.0).
    
// adiciona os nodes
//      addNode(cParentId, cNodeId, cNodeLabel).
oTreeList:addNode(     "", "cod00", "Tataravo0").
oTreeList:addNode("cod00", "cod11", "Avo1").
oTreeList:addNode("cod11", "cod55", "Pai1").
oTreeList:addNode("cod55", "cod66", "Filho1").
oTreeList:addNode("cod66", "cod22", "Neto1").
oTreeList:addNode("cod00", "cod77", "Pai2").
oTreeList:addNode("cod77", "cod33", "Filho2").

// adiciona os dados das colunas extras
DO  ix = 0 TO 7:
    oTreeList:setData("cod" + string(ix) + string(ix), "cod_empresa", "FND-" + string(ix)).
    oTreeList:setData("cod" + string(ix) + string(ix), "cod_usuario", "Super-" + string(ix)).
    oTreeList:setData("cod" + string(ix) + string(ix), "dtCalculo", TODAY + ix).
END.

// seta a cor de fundo e de frente de um node
oTreeList:setLineBgColor("cod66", 4).
oTreeList:setLineFgColor("cod66", 15).
oTreeList:setLineFont("cod66", 2).

// atualiza o browse do treelist
oTreeList:refresh().

// seleciona a linha no browse
oTreeList:selectLine ("cod77").
    
// altera o label de um node
oTreeList:setNodeLabel ("cod77", "Teste de Escrita (Pai2)").
    
// expande todos os nodes
oTreeList:expandAll().

//procura primeiro node
oTreeList:getFirstNode().

//procura ultimo node
oTreeList:getLastNode().

//procura próximo node
oTreeList:getNextNode().    

//procura node anterior
oTreeList:getLastNode().


...
WAIT-FOR ...

...
// Retira o TreeList da Memoria
DELETE OBJECT oTreeList NO-ERROR.

...
PROCEDURE browseEvent :
    DEFINE INPUT PARAMETER cEvent  AS CHARACTER NO-UNDO.
    DEFINE INPUT PARAMETER cNodeId AS CHARACTER NO-UNDO.
    
    MESSAGE cEvent SKIP
            cNodeId SKIP
            oTreeList:getDataChar(cNodeId, "cLabel") SKIP
            oTreeList:getDataInt(cNodeId, "cPai") SKIP
            oTreeList:getDataChar(cNodeId, "cod_empresa") SKIP 
            oTreeList:getDataChar(cNodeId, "cod_usuario") SKIP
            oTreeList:getDataDate(cNodeId, "dtCalculo") SKIP
            VIEW-AS ALERT-BOX.
END PROCEDURE.



04. DICAS DE CONVERSÃO DO OCX PARA O TOTVSTREELIST

Segue abaixo uma tabela com algumas dicas para facilitar o processo de conversão dos programas que atualmente utilizar o TreeList OCX.

ProcessoOCXTotvsTreeList
Definição de Variáveis
DEFINE VARIABLE chTreeList  AS COM-HANDLE       NO-UNDO.
DEFINE VARIABLE chImageList AS COM-HANDLE NO-UNDO.
DEFINE VARIABLE CtrlFrame AS WIDGET-HANDLE NO-UNDO.
DEFINE VARIABLE chCtrlFrame AS COMPONENT-HANDLE NO-UNDO.
USING com.totvs.framework.utp.treelist.*.
DEFINE VARIABLE oTreeList AS TotvsTreeList NO-UNDO.
Carregar o TreeList
Carrega o OCX através da procedure "control_load".
oTreeList = NEW TotvsTreeList().
oTreeList:parentFrame = FRAME default-frame:HANDLE.
oTreeList:parentProg = THIS-PROCEDURE.
// adiciona as colunas extras
oTreeList:AddColumn("cod_empresa", "character", 0,
"x(05)", "", "Empresa").
// define o tamanho do componente
oTreeList:setSize(2, 4, 107, 10).
// inicializa o treelist
oTreeList:initialize().
Posicionar a TreeList na tela
CREATE CONTROL-FRAME CtrlFrame ASSIGN
       FRAME           = FRAME fpage0:HANDLE
     ROW             = 7.25
       COLUMN          = 1
     HEIGHT          = 8.5
     WIDTH           = 129
     HIDDEN          = NO
     SENSITIVE       = YES.
oTreeList:setSize(7.25, 1, 129, 8.5).

Incluir uma coluna
chTreeList:ColumnHeaders:Add(iColPos,
cColId,
cColLabel,
iColWidth,
iAlign).
oTreeList:AddColumn(cColId,
cColType,
iColExtent,
cColFormat,
cColInital,
cColLabel,
lColInternal).
// Obs:
// iColPos - Será conforme a ordem de inclusão de colunas.
// iColWidth - Utilizar o método:
// oTreeList:setColumnSize(cColId, iColWidth).
// iAlign - Será conforme o tipo da coluna.
Verificar se o Componente está válido
IF VALID-HANDLE(chTreeList) THEN DO:
...
END.
IF oTreeList <> ? THEN DO:
...
END.
Jogar o foco para o TreeList
APPLY "ENTRY" TO CtrlFrame.
oTreeList:applyEntry().
Mostrar/Esconder o TreeList
chTreeList:VISIBLE = YES.  // Mostra
chTreeList:VISIBLE = NO. // Esconde
oTreeList:hideTreeList(FALSE).  // Mostra
oTreeList:hideTreeList(TRUE). // Esconde
Mostrar/Esconder uma Coluna
// Mostrar
ASSIGN chTreeList:ColumnHeaders:Item(iColId):WIDTH = 10.
// Esconder
ASSIGN chTreeList:ColumnHeaders:Item(iColId):WIDTH = 0.
ASSIGN cColId = entry(iColId, oTreeList:getColumnList()).
// Mostrar
oTreeList:hideColumn(cColId, FALSE).
// Esconder
oTreeList:hideColumn(cColId, TRUE).
Definir a cor de uma Linha
ASSIGN chTreeList:nodes(cNodeId):BackColor = 
RGB-VALUE(255, 255, 255).
oTreeList:setLineBgColor(cNodeId, 15).
Incluir um node
chTreeList:Nodes:Add(cParentId,
4,
                    cNodeId,
                    cNodeLabel,
iNodeIcon).
oTreeList:addNode(cParentId,
                 cNodeId,
                 cNodeLabel).
// Obs:
// iNodeIcon - O componente não suporta imagem,
// Utilize um caracter no Label
// para representar o tipo/imagem.
Apagar todos os nodes
chTreeList:Nodes:CLEAR().
oTreeList:emptyTreeList().
Verificar se existem nodes
IF chTreeList:nodes:Count > 0 THEN DO:
...
END.
IF oTreeList:hasNode() THEN DO:
...
END.
Selecionar um node
ASSIGN chTreeList:SelectedItem = 
chTreeList:nodes(cNodeId).
oTreeList:selectLine(cNodeId).
oTreeList:refresh().
Expandir o node
ASSIGN chTreeList:Nodes(cNodeId):Expanded = TRUE.
oTreeList:expandNode(cNodeId, TRUE).

Expandir/Fechar Todos os nodes

DO iNodeId = 1 TO chTreeList:Nodes:Count:
// Expandir
 ASSIGN chTreeList:Nodes(iNodeId):Expanded = TRUE.
// Fechar
 ASSIGN chTreeList:Nodes(iNodeId):Expanded = FALSE.
END.
// Expandir
oTreeList:expandAll().
// Fechar
oTreeList:collapseAll().
Monitorar o evento de click
PROCEDURE CtrlFrame.TreeList.NodeClick:
...
END PROCEDURE.
Criar a procedure "browseEvent"
apresentada no tópico de atributos, métodos e procedures.
Pegar a chave do node selecionado
ASSIGN cNodeId = chTreeList:selectedItem:KEY.
ASSIGN cNodeId = oTreeList:currentCode.
Incluir ou Atualizar uma informação em uma Célula (Linha/Coluna)
// Incluir
chTreeList:Nodes(cNodeId)
:ListSubItems:Add(, cColId, cValue).
// Atualizar
ASSIGN chTreeList:nodes(cNodeId)
:ListSubItems:ITEM(cColId)
:TEXT = cValue.
// Incluir ou Atualizar
oTreeList:setData(cNodeId, cColId, cValue).



05. TELA DO TOTVSTREELIST