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
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. |
- ()
- 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 ) -->
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. |
- 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 ) -->
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. |
- 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 )
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. |
- 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)
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. |
oTree:ChangeBmp("LBNO","LBTIK","01")
ChangePrompt
Altera a descrição de um item da árvore.
XTree(): ChangePrompt ( [ cPrompt], [ cCargo] ) -->
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. |
- 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
- (caracter)
- Indica a chave de identificação do item selecionado na árvore.
oTree:GetCargo()
GetFatherNode
Retorna informações do nó pai.
XTree(): GetFatherNode( ) --> aFather
- (array)
- Retorna vetor com informações do nó pai no seguinte formato:
- Caracter -> ID do nó pai. Caso seja o Root, o ID do pai será "000000"
- Caracter -> ID do nó.
- Lógico - > Se verdadeiro (.T.), indica que é um nó. Se falso (.F.), indica que é um i
- Caracter -> cCargo
- Caracter -> Resource 1
- Caracter -> Resource 2
oTree:GetFatherNode() --> aFather
GetPrompt
Retorna a descrição do item selecionado.
XTree(): GetPrompt ( ) --> cPrompt
- (caracter)
- Retorna a descrição do item selecionado.
oTree:GetPrompt()
IsEmpty
Indica se existem itens na árvore.
XTree(): IsEmpty ( ) --> lIsEmpty
- (logico)
- Retorna, verdadeiro (.T.), se a árvore estiver vazia; caso contrário, retornará falso (.F.).
oTree:IsEmpty() // Result: .F.
TreeSeek
Localiza e posiciona o cursor em um determinado elemento.
XTree(): TreeSeek ( < cCargo> ) --> lFind
Nome | Tipo | Descrição | Obrigatório | Referência |
cCargo | Caracter | Indica a chave de identificação do elemento na árvore. | X |
- (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