Classe: DBTree
Cria um objeto do tipo árvore de itens.
TSrvObject -> TControl -> TTree -> DBTree
New
Método construtor da classe.
DBTree(): New ( [ nTop], [ nLeft], [ nBottom], [ nRight], [ oWnd], [ bChange], [ bRClick], [ lCargo], [ lDisable], [ oFont], [ cHeaders] ) --> 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. | ||
nBottom | Numérico | Indica a coordenada vertical inferior do objeto. | ||
nRight | Numérico | Indica a coordenada horizontal à direita do objeto. | ||
oWnd | Objeto | Indica a janela ou controle visual onde o objeto será criado. | ||
bChange | 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. | ||
lCargo | Lógico | Indica 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.). | ||
lDisable | Lógico | Indica se, verdadeiro (.T.), cria o objeto da Tree desabilitado, ou seja, não permitindo foco e navegação no mesmo até que seja habilitado; caso contrário, falso (.F.). | ||
oFont | Objeto | Indica o objeto do tipo TFont utilizado para definir as características da fonte aplicada na exibição do conteúdo do controle visual. | ||
cHeaders | Caracter | Indica o texto que será exibido no(s) cabeçalho(s), também definindo a quantidade de colunas que a árvore conterá. Para mais de uma coluna utilize valores separados por ponto e vírgula. |
- ()
- Retorna o objeto criado.
oTree := DbTree():New(0,0,160,260,oDlg,,,.T.,'Tree header')
AddItem
Adiciona um item ou subitem na árvore.
DBTree(): AddItem ( [ cPrompt], [ cCargo], [ cRes1], [ cRes2], [ cFile1], [ cFile2], [ nTipo] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
cPrompt | Caracter | Indica a descrição do novo item. Para mais de uma coluna utilize valores separados por ponto e vírgula. | ||
cCargo | Caracter | Indica a chave de identificação do item na árvore. | ||
cRes1 | Caracter | Indica o nome da imagem, no repositório, que será apresentada quando o item estiver fechado. | ||
cRes2 | Caracter | Indica o nome da imagem, no repositório, que será apresentada quando o item estiver aberto. | ||
cFile1 | Caracter | Indica o nome da imagem, no diretório, que será apresentada quando o item estiver fechado. | ||
cFile2 | Caracter | Indica o nome da imagem, no diretório, que será apresentada quando o item estiver aberto. | ||
nTipo | Caracter | Indica o nível que o item ou subitem será adicionado, sendo: 1=No mesmo nível ou 2=Abaixo. |
- 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.
// Localiza o nível abaixo do qual // estes subitens deverão ser criados // -----------------------------------if oTree:TreeSeek("006") oTree:AddItem("Subnível 01","007", "FOLDER6",,,,2) oTree:AddItem("Subnível 02","008", "FOLDER6",,,,2) endif
AddTree
Adiciona um item, com nível 1, na árvore.
DBTree(): AddTree ( [ cPrompt], [ lOpened*], [ cRes1], [ cRes2], [ cFile1], [ cFile2], [ cCargo] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
cPrompt | Caracter | Indica a descrição do novo item. Para mais de uma coluna utilize valores separados por ponto e vírgula. | ||
lOpened | Lógico | Indica que, verdadeiro (.T.), o item será iniciado aberto; caso contrário, falso (.F.). *(Parâmetro descontinuado) | ||
cRes1 | Caracter | Indica o nome da imagem, no repositório, que será apresentada quando o item estiver fechado. | ||
cRes2 | Caracter | Indica o nome da imagem, no repositório, que será apresentada quando o item estiver aberto. | ||
cFile1 | Caracter | Indica o nome da imagem, no diretório, que será apresentada quando o item estiver fechado. | ||
cFile2 | Caracter | Indica o nome da imagem, no diretório, que será apresentada quando o item estiver aberto. | ||
cCargo | Caracter | Indica a chave de identificação do item na árvore. |
- 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.
oTree:AddTree("Nível 02","010", "FOLDER6")
AddTreeItem
Adiciona um item, com nível 1, na árvore.
DBTree(): AddTreeItem ( [ cPrompt], [ cRes], [ cFile], [ cCargo] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
cPrompt | Caracter | Indica a descrição do novo item. Para mais de uma coluna utilize valores separados por ponto e vírgula. | ||
cRes | Caracter | Indica o nome da imagem no repositório. | ||
cFile | Caracter | Indica o caminho para o arquivo de imagem. | ||
cCargo | Caracter | Indica a chave de identificação do elemento na árvore. |
- 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.
oTree:AddTreeItem("Novo Item","FOLDER7",,"006")
BeginUpdate
Prepara a árvore para receber os itens.
DBTree(): BeginUpdate ( ) -->
Este método é muito importante na criação do objeto para que os ajustes de criação e performance sejam realizados corretamente.
oTree:BeginUpdate()
ChangeBmp
Altera as imagens definidas para a árvore.
DBTree(): ChangeBmp ( [ cBmp1], [ cBmp2], [ cFile1], [ cFile2], [ cCargo] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
cBmp1 | Caracter | Indica o nome da imagem, no repositório, que será apresentada quando o item estiver fechado. | ||
cBmp2 | Caracter | Indica o nome da imagem, no repositório, que será apresentada quando o item estiver aberto. | ||
cFile1 | Caracter | Indica o nome da imagem, no diretório, que será apresentada quando o item estiver fechado. | ||
cFile2 | Caracter | Indica o nome da imagem, no diretório, que será apresentada quando o item estiver aberto. | ||
cCargo | Caracter | Indica a chave de identificação do item na árvore. |
oTree:ChangeBmp("LBNO","LBTIK",,,"001")
ChangePrompt
Altera a descrição de um item da árvore.
DBTree(): ChangePrompt ( [ cPrompt], [ cCargo] ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
cPrompt | Caracter | Indica a nova descrição do item. Para mais de uma coluna utilize valores separados por ponto e vírgula. | ||
cCargo | Caracter | Indica a chave de identificação do item na árvore. |
- 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.
oTree:ChangePrompt("Novo Texto Item 001","001")
DelItem
Exclui o item selecionado e, consequentemente, todos os seus subitens.
DBTree(): DelItem ( ) -->
oTree:DelItem()
EndTree
Indica o término da contrução da árvore.
DBTree(): EndTree ( ) -->
oTree:EndTree()
EndUpdate
Encerra a criação dos itens.
DBTree(): EndUpdate ( ) -->
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.
DBTree(): GetCargo ( ) --> cCargo
- (caracter)
- Indica a chave de identificação do item selecionado na árvore.
oTree:GetCargo()
GetPrompt
Retorna a descrição do item selecionado.
DBTree(): GetPrompt ( [ lSpace] ) --> cPrompt
Nome | Tipo | Descrição | Obrigatório | Referência |
lSpace | Lógico | Indica se, verdadeiro (.T.), retorna a descrição com os espaços ou, falso (.F.), se retira os espaços à direita e à esquerda da descrição. |
- (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.
oTree:GetPrompt(.T.) // Result: "Subnível 01"
IsEmpty
Indica se existem itens na árvore.
DBTree(): IsEmpty ( ) --> lIsEmpty
- (logico)
- Retorna, verdadeiro (.T.), se a árvore estiver vazia; caso contrário, retornará falso (.F.).
oTree:IsEmpty() // Result: .F.
Nivel
Retorna o nível do item selecionado.
DBTree(): Nivel ( ) --> nNivel
- ()
- 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
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> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
aNodes | Vetor | Indica 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()
- Nível do item (Caracter).
- ID que identificará este item (Caracter).
- Compatibilidade. Configure sempre com aspas "" (Caracter).
- Descrição que será apresentada no item (Caracter).
- Imagem quando o item da árvore estiver fechado (Caracter).
- 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
#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> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
cNivel | Caracter | Indica o nível que será atualizado. | X |
oTree:PTUpdateNodes( "005" )
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> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nFlags | Numé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 |
Comandos | Descriçã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> ) -->
Nome | Tipo | Descrição | Obrigatório | Referência |
nTipo | Numérico | Indica o tipo (1=horizontal e 2=vertical) da barra de rolagem. | X | |
lHabilita | Lógico | Indica 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
- ()
- 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
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 DBTree","002", "FOLDER10",,,,2) endif
Propriedade | Descrição | Tipo |
aBmps | Indica o array que contêm as imagens dos itens do objeto. | Vetor |
bInit | Indica o bloco de código que será executado na inicialização do objeto. | Bloco de código |
lActivated | Indica se, verdadeiro (.T.), o objeto está ativo; caso contrário, falso (.F.). | Lógico |
lCargo | Indica 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 |
lEnable | Indica se, verdadeiro (.T.), o objeto está habilitado; caso contrário, falso (.F.). | Lógico |
lProcess | Indica se, verdadeiro (.T.), o objeto está sendo atualizado; caso contrário, falso (.F.). | Lógico |
lRefreshing | Indica se, verdadeiro (.T.), o objeto está sendo atualizado; caso contrário, falso (.F.). | Lógico |
nTotal | Indica o total de itens do objeto. | Numérico |
bPromptChanged | Indica 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 |
nColumns | Retorna 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
#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() }; ,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,,,.F.,.T.,.F.,,.F.,,,.F. ) TButton():New( 172, 052, "Muda Texto", oDlg,{|| ; oTree:ChangePrompt("Novo Texto Item 001","001") },; 40,010,,,.F.,.T.,.F.,,.F.,,,.F. ) TButton():New( 172, 102, "Muda Imagem", oDlg,{||; oTree:ChangeBmp("LBNO","LBTIK",,,"001") },; 40,010,,,.F.,.T.,.F.,,.F.,,,.F. ) TButton():New( 172, 152, "Apaga Item", 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