Histórico da Página
...
Portuguese | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Classe: XTreeCria um objeto do tipo árvore de itens. TSrvObject -> TControl -> TTree -> XTree NewMétodo construtor da classe.XTree(): New ( [ nTop], [ nLeft], [ nWidth], [ nHeight], [ oOwner], [ uChange], [ uRClick] ) --> oObjeto
oObjeto
Exemplos oTree := xTree():New(000,000,300,300,oDlg,/*uChange*/,/*uRClick*/,/*bDblClick*/) AddItemAdiciona um item ou subitem na árvore.XTree(): AddItem ( cPrompt,cCargo,cResource1,cResource2,nType,bAction,bRClick,bDblClick ) -->
//Adiciona um novo item abaixo do item posicionado. oTree:AddItem("Novo Item","0106","folder5.png","folder6.png",2,/*bAction*/,/*bRClick*/,/*bDblClick*/) AddTreeAdiciona um item, com nível 1, na árvore.XTree(): AddTree ( cPrompt, cResource1, cResource2, cCargo, bAction, bRClick, bDblClick ) -->
//Cria nó na árvore oTree:AddTree("Nó","folder5.png","folder6.png","0101",/*bAction*/,/*bRClick*/,/*bDblClick*/) //Adiciona filhos //Fecha nó criado AddTreeItemAdiciona um item, na árvore.XTree(): AddTreeItem ( cPrompt, cResource, cCargo, bAction, bRClick, bDblClick )
//Cria nó na árvore oTree:AddTree("Nó","folder5.png","folder6.png","0101",/*bAction*/,/*bRClick*/,/*bDblClick*/) //Adiciona filhos //Fecha nó criado ChangeBmpAltera as imagens definidas para a árvore.XTree(): ChangeBmp ( cResource1, cResource2, cCargo, lForceUpdate)
oTree:ChangeBmp("LBNO","LBTIK","01") ChangePromptAltera a descrição de um item da árvore.XTree(): ChangePrompt ( [ cPrompt], [ cCargo] ) -->
oTree:ChangePrompt("Novo Texto Item 001","001") DelItem DeItemExclui o item selecionado e, consequentemente, todos os seus subitens.DBTreeXTree(): DelItem DeItem ( ) --> oTree:DelItem() EndTreeIndica o término da contrução da árvore.DBTreeXTree(): EndTree ( ) --> oTree:EndTree() EndUpdateEncerra 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() GetCargoRetorna a chave de identificação do item selecionado.DBTreeXTree(): GetCargo ( ) --> cCargo cCargo
oTree:GetCargo() GetFatherNodeRetornaDBTree XTree(): GetFatherNode( ) --> aFather aFather
oTree:GetFatherNode() GetPromptRetorna a descrição do item selecionado.XTree(): GetPrompt ( ) --> cPrompt
cPrompt
oTree:GetPrompt(.T.) // Result: "Subnível 01" IsEmptyIndica se existemIsEmptyIndica se existem itens na árvore.DBTreeXTree(): IsEmpty ( ) --> lIsEmpty lIsEmpty
oTree:IsEmpty() // Result: .F. ResetLimpa todos os itens da árvoreNivelRetorna o nível do item selecionado.DBTreeXTree(): Nivel Reset ( ) --> nNivel
oTree:Reset()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 Exemplo do método Nivel PTRefreshAtualiza todos os níveis da árvore.DBTree(): PTRefresh ( ) --> oTree:PTRefresh() PTSendTreePermite realizar a construção inicial, da classe DBTree(), a partir de um array pré-definido.DBTree(): PTSendTree ( < aNodes> ) -->
Formato do array para criação dos itens da classe DBTree()
Dicas de utilização do métodoEste 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:
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 PTSrvUpdatePositionSincroniza as informações entre o objeto Tree, no Smart Client, e o Application Server.DBTree(): PTSrvUpdatePosition ( ) --> oTree:PTSrvUpdatePosition() PTUpdateNodesAtualiza o item e seus subitens.DBTree(): PTUpdateNodes ( < cNivel> ) -->
oTree:PTUpdateNodes( "005" ) ResetLimpa todos os itens da árvore.DBTree(): Reset ( ) --> oTree:Reset() SetDisableDesabilita a utilização da árvore.DBTree(): SetDisable ( ) --> oTree:SetDisable() SetEnableHabilita a utilização da árvore.DBTree(): SetEnable ( ) --> oTree:SetEnable() SetFlagsHabilita/Desabilita certas funcionalidades do componente.DBTree(): SetFlags( <nFlags> ) -->
#define TTREE_ISEDITABLE 1 oTree:SetFlags( TTREE_ISEDITABLE ) // Habilita possibilidade de edição do Prompt de cada item da árvore SetScrollDefine a barra de rolagem da árvore.DBTree(): SetScroll ( < nTipo>, < lHabilita> ) -->
oTree:SetScroll(1,.T.) // Habilita barra de rolagem horizontaloTree:SetScroll(2,.T.) // Habilita barra de rolagem vertical TotalRetorna o número de itens na árvore.DBTree(): Total ( ) --> nItens nItens
oTree:Total() // Result: 8 TreeSeekLocaliza e posiciona o cursor em um determinado elemento.DBTree(): TreeSeek ( < cCargo> ) --> lFind
lFind
// 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
TreeSeekLocaliza e posiciona o cursor em um determinado elemento.XTree(): TreeSeek ( < cCargo> ) --> lFind
lFind
// 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", 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) endif
#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 Exemplo da classe DBTree() Microsiga Protheus 8.11 , Microsiga Protheus 11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
|