Atualizar TreeView
Olá Programadores,
Apresento um plano de contas contábeis em um TreeView a partir de uma base de dados. É um plano de contas bem grande. Para atualizar o treeView toda vez que é feita uma inserção ou exclusão de dados leva aproximadamente 1 minuto.
Tem como atualizar o TreeView simplesmente inserindo ou excluíndo nele o novo registro da base de dados sem ter que dar o Clear e começar o preenchimento do zero ??? Assim levaria apenas uma fração de segundos.
Toda ajuda será muito bem vinda !
Obrigado.
Apresento um plano de contas contábeis em um TreeView a partir de uma base de dados. É um plano de contas bem grande. Para atualizar o treeView toda vez que é feita uma inserção ou exclusão de dados leva aproximadamente 1 minuto.
Tem como atualizar o TreeView simplesmente inserindo ou excluíndo nele o novo registro da base de dados sem ter que dar o Clear e começar o preenchimento do zero ??? Assim levaria apenas uma fração de segundos.
Toda ajuda será muito bem vinda !
Obrigado.
Zangado
Curtidas 0
Respostas
Mmcamilo
10/01/2006
Segue aew abaixo meu irmao algumas funções que eu utilizo pra trabalhar com TreeView, analisa aew, de repente serve pra você!
Att.
Márcio M. Camilo
Att.
Márcio M. Camilo
procedure TreeDeleteItem(Sender: TTreeView; ItemList: TStrings; Level: Integer); var Node, Parent: TTreeNode; begin Node := TreeGetItem(Sender, ItemList); while Node.level >= Level do begin Parent := Node.parent; Node.delete; if (Parent = nil) or (Parent.hasChildren) then break; Node := Parent; end; end; function TreeAddItem(Sender: TTreeView; ItemList: TStrings; Bookmark: TBookmark; Resort: Boolean): TTreeNode; var ThisNode, Node: TTreeNode; I: Integer; begin Node := nil; //nil = level 0 has no parent node //this is checked by TreeFindItem for I := 0 to Itemlist.count -1 do begin ThisNode := TreeFindItem(Sender, node, Itemlist[i]); if ThisNode <> nil then Node := ThisNode else begin if I < Itemlist.count -1 then begin if I = 0 then Node := Sender.items.Add(Node, Itemlist[i]) else Node := Sender.items.AddChild(Node, Itemlist[i]); end else begin if I = 0 then Node := Sender.items.AddObject(Node, Itemlist[i], Bookmark) else Node := Sender.items.AddChildObject(Node, Itemlist[i], Bookmark); end; Node.stateIndex := Node.level + 1; if Resort and (Node.parent <> nil) then Node.parent.alphasort; end; end; Result := Node; end; function TreeFindItem(Sender: TTreeView; NodeItem: TTreeNode; Name: String): TTreeNode; begin if NodeItem = nil then NodeItem := Sender.items.getfirstnode else NodeItem := NodeItem.getfirstchild; if (NodeItem <> nil) and (NodeItem.text <> Name) then repeat NodeItem := NodeItem.getnextsibling; until (NodeItem = nil) or (NodeItem.text = Name); Result := NodeItem; end; function TreeGetItem(Sender: TTreeView; ItemList: TStrings): TTreeNode; begin Result := TreeAddItem(Sender, Itemlist, nil, false); end;
GOSTEI 0
Zangado
10/01/2006
mmcamilo, obrigado pela ajuda, resolveu o problema ! Precisando estamos aí !
GOSTEI 0
Alan
10/01/2006
mmcamilo, obrigado pela ajuda, resolveu o problema ! Precisando estamos aí !
Amigo como vc conseguiu resolver isso ?GOSTEI 0
Alan
10/01/2006
mmcamilo, obrigado pela ajuda, resolveu o problema ! Precisando estamos aí !
Amigo como vc conseguiu resolver isso ?GOSTEI 0