Atualizar TreeView
10/01/2006
0
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
Posts
10/01/2006
Mmcamilo
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;
11/01/2006
Zangado
23/02/2024
Alan
23/02/2024
Alan
Clique aqui para fazer login e interagir na Comunidade :)