Cria um objeto do tipo árvore de itens.

 

Hierarquia

TSrvObject -> TControl -> TTree -> XTree

 

MÉTODOS:

 

New - Método construtor da classe.

 Sintaxe

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

 

Parâmetros

 

Nome

Tipo

Descrição

Obrigatório

Referência

nTop

Numérico

Indica a coordenada vertical superior do objeto.

 

 

nLeft

Numérico

Indica a coordenada horizontal à esquerda do objeto.

 

 

nWidth

Numérico

Indica a coordenada vertical inferior do objeto.

 

 

nHeight

Numérico

Indica a coordenada horizontal à direita do objeto.

 

 

oOwner

Objeto

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

 

 

uChange

Bloco 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.

 

 

uRClick

Bloco de código

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

 

 

bDblClick

Bloco 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.

 

 

 

Retorno

oObjeto

  • Retorna o objeto criado.


Exemplos

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

__________________________________________________________________________________________________________________________________________________________________

AddItem - Adiciona um item ou subitem na árvore.

 Sintaxe

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

 

Parâmetros

 

Nome

Tipo

Descrição

Obrigatório

Referência

cPrompt

Caracter

Indica a descrição do novo item.

x

 

cCargo

Caracter

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

x

 

cResource1

Caracter

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

 

 

cResource2

Caracter

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

 

 

nType

Numérico

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

 

 

bAction

Bloco 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.

 

 

bRClick

Bloco de código

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

 

 

bDblClick

Bloco 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.

 

 

Observações

  • 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.

 

Exemplos

//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.

 Sintaxe

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

 

Parâmetros

 

Nome

Tipo

Descrição

Obrigatório

Referência

cPrompt

Caracter

Indica a descrição do novo item.

 

 

cResource1

Caracter

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

 

 

cResource2

Caracter

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

 

 

cCargo

Caracter

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

 

 

bAction

Bloco 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.

 

 

bRClick

Bloco de código

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

 

 

bDblClick

Bloco 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.

 

 

 

Observações

  • 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

 

Exemplos

//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.

 Sintaxe

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

 

Parâmetros

 

Nome

Tipo

Descrição

Obrigatório

Referência

cPrompt

Caracter

Indica a descrição do novo item.

 

 

cResource

Caracter

Indica o nome da imagem no repositório.

 

 

cCargo

Caracter

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

 

 

bAction

Bloco 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.

 

 

bRClick

Bloco de código

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

 

 

bDblClick

Bloco 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.

 

 

 Observações

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

 

Exemplos

//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.

 Sintaxe

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

 

Parâmetros

 

Nome

Tipo

Descrição

Obrigatório

Referência

cResource1

Caracter

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

 

 

cResource2

Caracter

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

 

 

cCargo

Caracter

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

 

 

lForceUpdate

Lógico

Força a alteração.

 

 

  

Exemplos

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

__________________________________________________________________________________________________________________________________________________________________

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

 Sintaxe

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

 

Parâmetros

 

Nome

Tipo

Descrição

Obrigatório

Referência

cPrompt

Caracter

Indica a nova descrição do item.

 

 

cCargo

Caracter

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

 

 

 Observações

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

 

Exemplos

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

__________________________________________________________________________________________________________________________________________________________________

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

 Sintaxe

XTree(): DeItem ( ) -->

 

Exemplos

oTree:DelItem()

__________________________________________________________________________________________________________________________________________________________________

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

 Sintaxe

XTree(): EndTree ( ) -->

 

 Exemplos

oTree:EndTree()

__________________________________________________________________________________________________________________________________________________________________

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

 Sintaxe

XTree(): GetCargo ( ) --> cCargo

Retorno

cCargo (caracter)

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

 

Exemplos

oTree:GetCargo()

__________________________________________________________________________________________________________________________________________________________________

GetFatherNode - Retorna informações do nó pai.

 Sintaxe

XTree(): GetFatherNode( ) --> aFather

 

Retorno

aFather (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.), indica que é um nó. Se falso (.F.), indica que é um i
  4. Caracter -> cCargo
  5. Caracter -> Resource 1
  6. Caracter -> Resource 2

 

Exemplos

oTree:GetFatherNode() --> aFather

__________________________________________________________________________________________________________________________________________________________________

GetPrompt - Retorna a descrição do item selecionado.

 Sintaxe

XTree(): GetPrompt ( ) --> cPrompt

 

Retorno 

cPrompt (caracter)

  • Retorna a descrição do item selecionado.

 

 Exemplos

oTree:GetPrompt()

__________________________________________________________________________________________________________________________________________________________________

IsEmpty - Indica se existem itens na árvore.

 Sintaxe

XTree(): IsEmpty ( ) --> lIsEmpty

Retorno

lIsEmpty (logico)

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

 

Exemplos

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

__________________________________________________________________________________________________________________________________________________________________

Reset - Limpa todos os itens da árvore.

 Sintaxe

XTree(): Reset ( ) -->

 

Exemplos

oTree:Reset()

__________________________________________________________________________________________________________________________________________________________________

TreeSeek - Localiza e posiciona o cursor em um determinado elemento.

 Sintaxe

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

 

Parâmetros 

Nome

Tipo

Descrição

Obrigatório

Referência

cCargo

Caracter

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

X

 

 

Retorno

lFind (logico)

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

 

Exemplos

// 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

__________________________________________________________________________________________________________________________________________________________________

 

EXEMPLOS:

#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 Item", oDlg,{|| oTree:TreeSeek(AllTrim(cGet))},40,010,,,.F.,.T.,.F.,,.F.,,,.F. )
 
 
 TButton():New( 010,300 , "Add Item", oDlg,{|| AddItem(oTree) },40,010,,,.F.,.T.,.F.,,.F.,,,.F. )
 
 TButton():New( 020,300 , "Change BMP", oDlg,{|| oTree:ChangeBmp("LBNO","LBTIK","01") },40,010,,,.F.,.T.,.F.,,.F.,,,.F. )
 
 @ 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( 040,300 , "Info Pai", oDlg,{|| 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

__________________________________________________________________________________________________________________________________________________________________

PREVIEW

 

Exemplo da classe XTree()