Páginas filhas
  • XTree()

Versões comparadas

Chave

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

...

Portuguese

Pagetitle
XTree
XTree

Classe: XTree

Cria um objeto do tipo árvore de itens.

TSrvObject -> TControl -> TTree -> XTree


New

Método construtor da classe.


XTree(): New ( [ nTop], [ nLeft], [ nWidth], [ nHeight], [ oOwner], [ uChange], [ uRClick] ) --> oObjeto



 

NomeTipoDescriçãoObrigatórioReferência
nTopNuméricoIndica a coordenada vertical superior do objeto.
  


nLeftNuméricoIndica a coordenada horizontal à esquerda do objeto.
  


nWidthNuméricoIndica a coordenada vertical inferior do objeto.
  


nHeightNuméricoIndica a coordenada horizontal à direita do objeto.
  


oOwnerObjetoIndica a janela ou controle visual onde o objeto será criado.
 
 


uChangeBloco de códigoIndica o bloco de código que será executado quando o estado ou conteúdo do objeto é modificado pela ação sobre o controle visual.
  


uRClickBloco de códigoIndica o bloco de código que será executado quando clicar, com o botão direito do mouse, sobre o objeto.
 
 


bDblClickBloco de códigoIndica o bloco de código que será executado quando clicar duas vezes, com o botão direito do mouse, sobre o objeto.
  

 




oObjeto
    ()
  • Retorna o objeto criado.

Exemplos
oTree := xTree():New(000,000,300,300,oDlg,/*uChange*/,/*uRClick*/,/*bDblClick*/)

Métodos

AddItem

Adiciona um item ou subitem na árvore.


XTree(): AddItem ( cPrompt,cCargo,cResource1,cResource2,nType,bAction,bRClick,bDblClick ) -->



 

NomeTipoDescriçãoObrigatórioReferência
cPromptCaracterIndica a descrição do novo item.x
 

cCargoCaracterIndica a chave de identificação do item na árvore.x
 

cResource1CaracterIndica o nome da imagem, no repositório, que será apresentada quando o item estiver fechado.
 
 


cResource2CaracterIndica o nome da imagem, no repositório, que será apresentada quando o item estiver aberto.
  


nTypeNuméricoIndica o nível que o item ou subitem será adicionado, sendo: 1=No mesmo nível ou 2=Abaixo.
 
 


bActionBloco de código
   
Indica o bloco de código que será executado quando o estado ou conteúdo do objeto é modificado pela ação sobre o controle visual.

bRClickBloco de códigoIndica o bloco de código que será executado quando clicar, com o botão direito do mouse, sobre o objeto.
bRClickBloco de código   


bDblClickBloco de código
   

 

Indica o bloco de código que será executado quando clicar duas vezes, com o botão direito do mouse, sobre o objeto.



  • Utilizado para adicionar itens dinamicamente na árvore, depois de sua Utilizado para adicionar itens dinamicamente na árvore, depois de sua construção. Para adicionar itens durante a criação do objeto, utilize os métodos AddTree e AddTreeItem.

//Adiciona um novo item abaixo do item posicionado.
oTree:AddItem("Novo Item","0106","folder5.png","folder6.png",2,/*bAction*/,/*bRClick*/,/*bDblClick*/)

AddTree

Adiciona um item, com nível 1, na árvore.


XTree(): AddTree ( cPrompt, cResource1, cResource2, cCargo, bAction, bRClick, bDblClick ) -->


 


NomeTipoDescriçãoObrigatórioReferência
cPromptCaracterIndica a descrição do novo item.
  


cResource1CaracterIndica o nome da imagem, no repositório, que será apresentada quando o item estiver fechado.
  


cResource2CaracterIndica o nome da imagem, no repositório, que será apresentada quando o item estiver aberto.
  


cCargoCaracterIndica a chave de identificação do item na árvore.
  


bActionBloco de código
   bRClickBloco de código   bDblClickBloco de código   

 

Indica o bloco de código que será executado quando o estado ou conteúdo do objeto é modificado pela ação sobre o controle visual.

bRClickBloco de códigoIndica o bloco de código que será executado quando clicar, com o botão direito do mouse, sobre o objeto.

bDblClickBloco de códigoIndica o bloco de código que será executado quando clicar duas vezes, com o botão direito do mouse, sobre o objeto.



  • Utilizado para adicionar um nó na árvore durante a construção do objeto. Para adicionar dinamicamente, utilizar método AddItem.
  • Após a
  • Utilizado para adicionar um nó na árvore durante a construção do objeto. Para adicionar dinamicamente, utilizar método AddItem.
  • Após a utilização desse método deve haver a chamada do método EndTree() para fechar o nó construído

//Cria nó na árvore
oTree:AddTree("Nó","folder5.png","folder6.png","0101",/*bAction*/,/*bRClick*/,/*bDblClick*/)
 
 //Adiciona filhos
 oTree:AddTreeItem("Nó filho","folder5.png","0102",/*bAction*/,/*bRClick*/,/*bDblClick*/)
 
//Fecha nó criado
oTree:EndTree()

AddTreeItem

Adiciona um item, na árvore.


XTree(): AddTreeItem ( cPrompt, cResource, cCargo, bAction, bRClick, bDblClick )



 

NomeTipoDescriçãoObrigatórioReferência
cPromptCaracterIndica a descrição do novo item.
  


cResourceCaracterIndica o nome da imagem no repositório.
 
 


cCargoCaracterIndica a chave de identificação do elemento na árvore.
  


bAction
    bRClick    bDblClick    

 

Bloco de códigoIndica o bloco de código que será executado quando o estado ou conteúdo do objeto é modificado pela ação sobre o controle visual.

bRClickBloco de códigoIndica o bloco de código que será executado quando clicar, com o botão direito do mouse, sobre o objeto.

bDblClickBloco de códigoIndica o bloco de código que será executado quando clicar duas vezes, com o botão direito do mouse, sobre o objeto.



  • Utilizado para adicionar um item no nó da árvore aberto durante a construção do objeto. Para adicionar dinamicamente, utilizar método AddItem.

//Cria nó na árvore
oTree:AddTree("Nó","folder5.png","folder6.png","0101",/*bAction*/,/*bRClick*/,/*bDblClick*/)
 
 //Adiciona filhos
 oTree:AddTreeItem("Nó filho","folder5.png","0102",/*bAction*/,/*bRClick*/,/*bDblClick*/)
 
//Fecha nó criado
oTree:EndTree()

ChangeBmp

Altera as imagens definidas para a árvore.


XTree(): ChangeBmp ( cResource1, cResource2, cCargo, lForceUpdate)


 


NomeTipoDescriçãoObrigatórioReferência
cResource1CaracterIndica o nome da imagem, no repositório, que será apresentada quando o item estiver fechado.
 
 


cResource2CaracterIndica o nome da imagem, no repositório, que será apresentada quando o item estiver aberto.
  


cCargoCaracterIndica a chave de identificação do item na árvore.
  


lForceUpdateLógico
   

 

Força a alteração.




oTree:ChangeBmp("LBNO","LBTIK","01")

ChangePrompt

Altera a descrição de um item da árvore.


XTree(): ChangePrompt ( [ cPrompt], [ cCargo] ) -->



 

NomeTipoDescriçãoObrigatórioReferência
cPromptCaracterIndica a nova descrição do item.
 
 


cCargoCaracterIndica a chave de identificação do item na árvore.
  

 





  • Pode se utilizar em conjunto com o método GetCargo para alterar a descrição do item atual.

oTree:ChangePrompt("Novo Texto Item 001","001")
DelItem

DeItem

Exclui o item selecionado e, consequentemente, todos os seus subitens.


DBTreeXTree(): DelItem DeItem ( ) -->


 
oTree:DelItem()

EndTree

Indica o término da contrução da árvore.


DBTreeXTree(): EndTree ( ) -->


oTree:EndTree()

EndUpdate

Encerra a criação dos itens.

DBTree
()
: EndUpdate ( ) -->
Observações

Este método é muito importante na criação do objeto para que os ajustes de criação e performance sejam realizados corretamente.

oTree:EndUpdate()

GetCargo

Retorna a chave de identificação do item selecionado.


DBTreeXTree(): GetCargo ( ) --> cCargo

cCargo
    (caracter)
  • Indica a chave de identificação do item selecionado na árvore.


 


oTree:GetCargo()
GetPrompt
GetPrompt

GetFatherNode

Retorna

a descrição do item selecionado

informações do nó pai.


DBTree

XTree():

GetPrompt

GetFatherNode(

[ lSpace]

) -->

cPrompt Nome
aFather
    TipoDescriçãoObrigatórioReferêncialSpaceLógicoIndica se,
      (array)
    • Retorna vetor com informações do nó pai no seguinte formato:
      1. Caracter -> ID do nó pai. Caso seja o Root, o ID do pai será "000000"
      2. Caracter -> ID do nó.
      3. Lógico - > Se verdadeiro (.T.),
    retorna a descrição com os espaços ou,
      1. indica que é um nó. Se falso (.F.),
    se retira os espaços à direita e à esquerda da descrição.  

     

      1. indica que é um i
      2. Caracter -> cCargo
      3. Caracter -> Resource 1
      4. Caracter -> Resource 2


    oTree:GetFatherNode() --> aFather
     

    GetPrompt

    cPrompt(caracter)

    Retorna a descrição do item selecionado.

    A opção de múltiplas colunas definidas pelo parâmetro cHeaders do construtor New do objeto e alimentadas por valores separados por ponto e vírgula do parâmetro cPrompt deste método, está disponível somente em builds superiores à 7.00.120420A.

    XTree(): GetPrompt ( ) --> cPrompt


    cPrompt
      (caracter)
    • Retorna a descrição do item selecionado.


    oTree:GetPrompt(.T.) // Result: "Subnível 01")

    IsEmpty

    Indica se existem itens na árvore.


    DBTreeXTree(): IsEmpty ( ) --> lIsEmpty

    lIsEmpty
      (logico)
    • Retorna, verdadeiro (.T.), se a árvore estiver vazia; caso contrário, retornará falso (.F.).


     


    oTree:IsEmpty() // Result: .F.
    Nivel

    Reset

    Limpa todos os itens da árvore

    Nivel

    Retorna o nível do item selecionado

    .


    DBTreeXTree(): Nivel Reset ( ) --> nNivel



     

    nNivel

    oTree:Reset()
  • Retorna o nível do item selecionado, sendo que o primeiro item estará no nível 1, seus filhos no nível 2 e assim sucessivamente.
  • oTree:Nivel() // Result: 3
    Exemplo do método Nivel
    Image Removed

    PTRefresh

    Atualiza todos os níveis da árvore.

    DBTree(): PTRefresh ( ) -->

     
    oTree:PTRefresh()

    PTSendTree

    Permite realizar a construção inicial, da classe DBTree(), a partir de um array pré-definido.

    DBTree(): PTSendTree ( < aNodes> ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    aNodesVetorIndica o array pré-definido com informações para criar a árvore. Para mais informações referente ao formato do array, consulte a área Observações.X 

     

     

    Disponibilidade

    Método disponível a partir da build 7.00.080806P.

     

    Formato do array para criação dos itens da classe DBTree()

    1. Nível do item (Caracter).
    2. ID que identificará este item (Caracter).
    3. Compatibilidade. Configure sempre com aspas "" (Caracter).
    4. Descrição que será apresentada no item (Caracter).
    5. Imagem quando o item da árvore estiver fechado (Caracter).
    6. Imagem quando o item da árvore estiver aberto (Caracter).

     
     

    Dicas de utilização do método

    Este método foi desenvolvido para acelerar a criação da árvore. No entanto, para que funcione corretamente, é necessário seguir as seguintes regras na criação do array:

    • Os itens devem ser criados na ordem exata que serão apresentados.
    • Os níveis devem ser inseridos de acordo com a posição do item.

     

    No exemplo abaixo, observe a maneira correta de alimentar o array:
     

     
    // ExemploDEFINE DIALOG oDlg TITLE "Exemplo do PTSendTree" FROM 180,180 TO 550,700 PIXELIMAGE1 := "FOLDER5"IMAGE2 := "FOLDER6"aNodes := {}aadd(aNodes,{'00',"001","","Descrição Raiz",IMAGE1,IMAGE2})         // Raizaadd(aNodes,{'01',"002","","Descrição Subnível 01",IMAGE1,IMAGE2}) // Segundo nívelaadd(aNodes,{'02',"003","","Descrição Subnível 02",IMAGE1,IMAGE2}) // Terceiro nívelaadd(aNodes,{'01',"004","","Descrição Subnível 01",IMAGE1,IMAGE2}) // Segundo nívelaadd(aNodes,{'02',"005","","Descrição Subnível 02",IMAGE1,IMAGE2}) // Terceiro nível// Cria o objeto Tree e carrega os itensoTree := DbTree():New(0,0,160,260,oDlg,,,.T.)oTree:PTSendTree( aNodes )ACTIVATE DIALOG oDlg CENTERED

     

    Visualização
    Image Removed
     

    #include "TOTVS.CH"User Function PTSendTree()Local nX,nY,nZDEFINE DIALOG oDlg TITLE "Exemplo do PTSendTree" FROM 180,180 TO 550,700 PIXELaNodes := {}IMAGE1  := "" 	// Imagem quando nível estiver fechadoIMAGE2  := "" 	// Imagem quando nível estiver abertonLoop   := 690  // Quantidade de Loops - irá gerar 20010 ItensnCount	:= 0	// Simula ID dos itens da Tree//cTime1 := Time()// PRIMEIRO NÍVELfor nX := 1 to nLoop		nCount++	IMAGE1 := "FOLDER5"	aadd( aNodes, {'00', StrZero(nCount,7), "", "Primeiro Nível->ID: "+;	StrZero(nCount,7), IMAGE1, IMAGE2} )		// SEGUNDO NÍVEL	for nY := 1 to 7				nCount++		IMAGE1 := "FOLDER6"		aadd( aNodes, {'01', StrZero(nCount,7), "", "Segundo Nível->ID: "+;		StrZero(nCount,7), IMAGE1, IMAGE2} )				// TERCEIRO NÍVEL		for nZ := 1 to 3						nCount++			IMAGE1 := "FOLDER10"			aadd( aNodes, {'02',StrZero(nCount,7),"","Terceiro Nível->ID: "+;			StrZero(nCount,7), IMAGE1, IMAGE2} )					next nZ			next nY	next nX// Cria o objeto TreeoTree := DbTree():New(0,0,160,260,oDlg,,,.T.)// Método para carga dos itens da TreeoTree:PTSendTree( aNodes )ACTIVATE DIALOG oDlg CENTEREDReturn

    PTSrvUpdatePosition

    Sincroniza as informações entre o objeto Tree, no Smart Client, e o Application Server.

    DBTree(): PTSrvUpdatePosition ( ) -->

     
    oTree:PTSrvUpdatePosition()

    PTUpdateNodes

    Atualiza o item e seus subitens.

    DBTree(): PTUpdateNodes ( < cNivel> ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    cNivelCaracterIndica o nível que será atualizado.X 

     

     
    oTree:PTUpdateNodes( "005" )

    Reset

    Limpa todos os itens da árvore.

    DBTree(): Reset ( ) -->

     
    oTree:Reset()

    SetDisable

    Desabilita a utilização da árvore.

    DBTree(): SetDisable ( ) -->

     
    oTree:SetDisable()

    SetEnable

    Habilita a utilização da árvore.

    DBTree(): SetEnable ( ) -->

     
    oTree:SetEnable()

    SetFlags

    Habilita/Desabilita certas funcionalidades do componente.

    DBTree(): SetFlags( <nFlags> ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    nFlagsNumérico

    Valor que representa a(s) funcionalidade(s) a ser(em) habilitada(s). Valores de flags podem ser somados para que mais de uma funcionalidade seja habilitada ao mesmo tempo.

    X 

     

     

    ComandosDescrição
    1 (TTREE_ISEDITABLE)Habilita edição do texto (prompt) dos itens.

     

    • Este método está disponível somente em builds superiores à build 7.00.120420A

     

    #define TTREE_ISEDITABLE     1
    oTree:SetFlags( TTREE_ISEDITABLE ) // Habilita possibilidade de edição do Prompt de cada item da árvore

    SetScroll

    Define a barra de rolagem da árvore.

    DBTree(): SetScroll ( < nTipo>, < lHabilita> ) -->

     

    NomeTipoDescriçãoObrigatórioReferência
    nTipoNuméricoIndica o tipo (1=horizontal e 2=vertical) da barra de rolagem.X 
    lHabilitaLógicoIndica se habilita (.T.) ou desabilita (.F.) a barra de rolagem.X 

     

    oTree:SetScroll(1,.T.) // Habilita barra de rolagem horizontaloTree:SetScroll(2,.T.) // Habilita barra de rolagem vertical

    Total

    Retorna o número de itens na árvore.

    DBTree(): Total ( ) --> nItens

    nItens
      ()
    • Retorna o número de itens na árvore.
    oTree:Total() // Result: 8

    TreeSeek

    Localiza e posiciona o cursor em um determinado elemento.

    DBTree(): TreeSeek ( < cCargo> ) --> lFind

     

    NomeTipoDescriçãoObrigatórioReferência
    cCargoCaracterIndica a chave de identificação do elemento na árvore.X 

     

    lFind
      (logico)
    • Retorna, verdadeiro (.T.), se o cargo for localizado; caso contrário, retornará falso (.F.)

     

     

     

     

    // Localiza o Cargo 001 e posiciona o cursor// para que o segundo nível seja criado abaixo dele// -----------------------------------------------------if oTree:TreeSeek("001")   oTree:AddItem("Segundo nível da DBTree","002", "FOLDER10",,,,2)	endif

     

    PropriedadeDescriçãoTipo
    aBmpsIndica o array que contêm as imagens dos itens do objeto.Vetor
    bInitIndica o bloco de código que será executado na inicialização do objeto.Bloco de código
    lActivatedIndica se, verdadeiro (.T.), o objeto está ativo; caso contrário, falso (.F.).Lógico
    lCargoIndica se, verdadeiro (.T.), os elementos da Tree utilizarão a propriedade cCargo, do método AddItem(), que armazena uma string identificadora, para cada elemento e item da árvore; caso contrário, falso (.F.).Lógico
    lEnableIndica se, verdadeiro (.T.), o objeto está habilitado; caso contrário, falso (.F.).Lógico
    lProcessIndica se, verdadeiro (.T.), o objeto está sendo atualizado; caso contrário, falso (.F.).Lógico
    lRefreshingIndica se, verdadeiro (.T.), o objeto está sendo atualizado; caso contrário, falso (.F.).Lógico
    nTotalIndica o total de itens do objeto.Numérico
    bPromptChangedIndica o bloco de código, no formato {|cID, nColumn, cNewPrompt| }, que será executado quando um prompt for editado na Tree pelo usuário. O cID conterá o Cargo (valor identificador do item), nColumn a coluna e cNewPrompt o novo prompt do item. Disponível somente em builds superiores à build 7.00.120420A.Bloco de código
    nColumnsRetorna a quantidade de colunas do objeto. Disponível somente em builds superiores à build 7.00.120420A.Numérico

     

    • Caso seja informada uma quantidade menor de colunas para um item do que a quantidade determinada no construtor do objeto, as colunas serão criadas automaticamente em branco, para que o item respeite a quantidade definida no construtor. Colunas excedentes de um item serão descartadas.
    • É possível definir a quantidade de colunas do objeto sem que o cabeçalho seja exibido. Para isto, basta informar somente os delimitadores, como por exemplo ";;;" para quatro colunas.
    • É importante utilizar os métodos BeginUpdate(), para iniciar a criação do objeto, e EndUpdate(), ao término, para que os ajustes de performance e criação sejam realizados corretamente.

    A seguir, veja o código fonte exemplo:

    oTree := DbTree():New(0,0,160,260,oDlg,,,.T.,,) // Cria a TreeoTree:BeginUpdate()    // Prepara o objeto para receber os itensoTree:SetScroll(1,.T.) // Habilita a barra de rolagem horizontaloTree:SetScroll(2,.T.) // Habilita a barra de rolagem vertical  for nX := 1 to 5    id++                             cId := strZero(id,7)    oTree:AddItem("Primeiro Nível: "+cId,cId, "FOLDER5" ,"FOLDER6",,,1)    If oTree:TreeSeek(cId)       for nY := 1 to 10	      id++                         	      cId := strZero(id,7)   		  oTree:AddItem("Subnível:"+cId,cId, "FOLDER10",,,,2)	  	  next                      endif     next  oTree:EndUpdate() // Finaliza a criação dos itens

    TreeSeek

    Localiza e posiciona o cursor em um determinado elemento.


    XTree(): TreeSeek ( < cCargo> ) --> lFind



    NomeTipoDescriçãoObrigatórioReferência
    cCargoCaracterIndica a chave de identificação do elemento na árvore.X


    lFind
      (logico)
    • Retorna, verdadeiro (.T.), se o cargo for localizado; caso contrário, retornará falso (.F.)



    // Localiza o Cargo 001 e posiciona o cursor
    // para que o segundo nível seja criado abaixo dele
    // -----------------------------------------------------
    if oTree:TreeSeek("001")   
    oTree:AddItem("Segundo nível da XTree","002", "FOLDER10",,,,2)	
    endif



    #Include 'Protheus.ch'
    User Function tdnXtree()
    Local oGet
    Local cGet := Space(6)
    Local cDescri := Space(10)
    DEFINE DIALOG oDlg TITLE "Exemplo de XTree" FROM 0,0 TO 600,800 PIXEL

    //-------------------
    //Cria o objeto XTREE
    //-------------------
    oTree := xTree():New(000,000,300,300,oDlg,/*uChange*/,/*uRClick*/,/*bDblClick*/)

    //-------
    //Nível 1
    //-------
    oTree:AddTree("01","folder5.png","folder6.png","01",/*bAction*/,/*bRClick*/,/*bDblClick*/)
    //-------
    //Nível 2
    //-------
    oTree:AddTree("Teste","folder5.png","folder6.png","0101",/*bAction*/,/*bRClick*/,/*bDblClick*/)

    oTree:EndTree()

    oTree:AddTree("0101","folder5.png","folder6.png","0101",/*bAction*/,/*bRClick*/,/*bDblClick*/)

    //-------
    //Nível 3
    //-------

    oTree:AddTreeItem("0102","folder5.png","0102",/*bAction*/,/*bRClick*/,/*bDblClick*/)

    oTree:EndTree()

    oTree:AddTree("0103","folder5.png","folder6.png","0103",/*bAction*/,/*bRClick*/,/*bDblClick*/)

    oTree:EndTree()

    oTree:EndTree()



    //---------------
    //Funcionalidades
    //---------------
    @ 000,340 GET oGet VAR cGet OF oDlg SIZE 40, 010 PIXEL
    TButton():New( 0,300 , "Seek
    #include "TOTVS.CH"User Function DbTree() DEFINE DIALOG oDlg TITLE "Exemplo de DBTree" FROM 180,180 TO 550,700 PIXEL // Cria a Tree oTree := DbTree():New(0,0,160,260,oDlg,,,.T.) // Insere itens oTree:AddItem("Primeiro nível da DBTree","001", "FOLDER5" ,,,,1) If oTree:TreeSeek("001") oTree:AddItem("Segundo nível da DBTree","002", "FOLDER10",,,,2) If oTree:TreeSeek("002") oTree:AddItem("Subnível 01","003", "FOLDER6",,,,2) oTree:AddItem("Subnível 02","004", "FOLDER6",,,,2) oTree:AddItem("Subnível 03","005", "FOLDER6",,,,2) endif endif oTree:TreeSeek("001") // Retorna ao primeiro nível // Cria botões com métodos básicos TButton():New( 160, 002, "Seek Item 4", oDlg,{|| oTree:TreeSeek("004")}; ,40,010,,,.F.,.T.,.F.,,.F.,,,.F. ) TButton():New( 160, 052, "Enable" , oDlg,{|| oTree:SetEnable() }; ,40,010,,,.F.,.T.,.F.,,.F.,,,.F. ) TButton():New( 160, 102, "Disable" , oDlg,{|| oTree:SetDisable() }; ,40,010,,,.F.,.T.,.F.,,.F.,,,.F. ) TButton():New( 160, 152, "Novo
     Item", oDlg,{|| 
    TreeNewIt
    oTree:TreeSeek(AllTrim(cGet)
    };
    )},40,010,,,.F.,.T.,.F.,,.F.,,,.F. )


    TButton():New(
    172,02,"Dados do item", oDlg,{|| ; Alert("Cargo: "+oTree:GetCargo()+chr(13)+"Texto: "+oTree:GetPrompt(.T.)) },; 40,10
    010,300 , "Add Item", oDlg,{|| AddItem(oTree) },40,010,,,.F.,.T.,.F.,,.F.,,,.F. )

    TButton():New( 
    172
    020,300 
    052
    , "
    Muda
    Change 
    Texto
    BMP", oDlg,{|| 
    ;
    oTree:
    ChangePrompt
    ChangeBmp(
    "Novo Texto Item 001
    "LBNO","LBTIK","
    001
    01") },
    ;
    40,010,,,.F.,.T.,.F.,,.F.,,,.F. )

    @
    TButton():New( 172, 102, "Muda Imagem", oDlg,{||; oTree:ChangeBmp("LBNO","LBTIK",,,"001") },;
    030,340 GET oGet1 VAR cDescri OF oDlg SIZE 40, 010 PIXEL
    TButton():New( 030,300 , "Altera Prompt", oDlg,{|| ChangePrompt(oTree,cDescri)},40,010,,,.F.,.T.,.F.,,.F.,,,.F. )

    TButton():New( 
    172
    040,300 
    152
    , "
    Apaga
    Info 
    Item
    Pai", oDlg,{||
    ; if(oTree:TreeSeek("006"),oTree:DelItem(),) },; 40,010,,,.F.,.T.,.F.,,.F.,,,.F. ) // Indica o término da contrução da Tree oTree:EndTree() ACTIVATE DIALOG oDlg CENTERED Return //----------------------------------------// Função auxiliar para inserção de item//----------------------------------------Static Function TreeNewIt() // Cria novo item na Tree oTree:AddTreeItem("Novo Item","FOLDER7",,"006") if oTree:TreeSeek("006") oTree:AddItem("Sub-nivel 01","007", "FOLDER6",,,,2) oTree:AddItem("Sub-nivel 02","008", "FOLDER6",,,,2) endifReturn
     ShowFatherInfo(oTree)},40,010,,,.F.,.T.,.F.,,.F.,,,.F. )


    ACTIVATE DIALOG oDlg CENTERED
    Return
    Static Function ChangePrompt(oTree,cDescri)
    oTree:ChangePrompt(cDescri,oTree:GetCargo())
    Return

    Static Function AddItem(oTree)
    If oTree:TreeSeek("0102")

    oTree:AddItem("Novo Item","0106","folder5.png","folder6.png",2,/*bAction*/,/*bRClick*/,/*bDblClick*/)

    EndIf
    Return
     
    Static Function ShowFatherInfo(oTree)
    Local aInfo := oTree:GetFatherNode()
    Local cMessage
    If Len(aInfo) > 0
    cMessage := "ID do Pai : " + aInfo[1] + CRLF
    cMessage += "ID : " + aInfo[2] + CRLF
    cMessage += "É nó? : " + IIf(aInfo[3],".T.",".F.") + CRLF
    cMessage += "cCargo : " + aInfo[4] + CRLF
    cMessage += "cResource1: " + aInfo[5] + CRLF
    cMessage += "cResource2: " + aInfo[6] + CRLF
    MsgInfo(cMessage,"Info do nó pai")
    EndIf
    Return

    Exemplo da classe XTree()
    Image AddedExemplo da classe DBTree()
    Image Removed

    Microsiga Protheus 8.11 , Microsiga Protheus 11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server