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

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

bActionBloco 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ógicoForç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")

DeItem

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


XTree(): DeItem ( ) -->


oTree:DelItem()

EndTree

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


XTree(): EndTree ( ) -->


oTree:EndTree()

GetCargo

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


XTree(): GetCargo ( ) --> cCargo

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


 


oTree:GetCargo()
 

GetFatherNode

Retorna informações do nó pai.


XTree(): GetFatherNode( ) --> aFather


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


oTree:GetFatherNode() --> aFather
 

GetPrompt

Retorna a descrição do item selecionado.


XTree(): GetPrompt ( ) --> cPrompt


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


oTree:GetPrompt()

IsEmpty

Indica se existem itens na árvore.


XTree(): IsEmpty ( ) --> lIsEmpty

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


 


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

Reset

Limpa todos os itens da árvore.


XTree(): Reset ( ) -->



 


oTree:Reset()

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

Exemplo da classe XTree()

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


  • Sem rótulos