Classe: DBTree

Vamos aprender como usar a Classe: DBTree para criar um objeto do tipo árvore de itens.

Sintaxe:
DBTree(): New ( [ nTop], [ nLeft], [ nBottom], [ nRight], [ oWnd], [ bChange], [ bRClick], [ lCargo], [ lDisable], [ oFont] ) –> oObjeto

Parâmetros:

  • 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.
  • Retorno
    oObjeto()
    Retorna o objeto criado.

Tela mostrando o Exemplo: http://tdn.totvs.com/command/getimage?key=fileName%3DDBTree.jpg%2Cmime%3Dimage%2Fpjpeg%2Ctimestamp%3D1314292833245

#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)	
  endif
Return

Queremos saber sua opinião