Atualizar TreeView

10/01/2006

0

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.


Zangado

Zangado

Responder

Posts

10/01/2006

Mmcamilo

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

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;



Responder

11/01/2006

Zangado

mmcamilo, obrigado pela ajuda, resolveu o problema ! Precisando estamos aí !


Responder

23/02/2024

Alan

mmcamilo, obrigado pela ajuda, resolveu o problema ! Precisando estamos aí !


Amigo como vc conseguiu resolver isso ?
Responder

23/02/2024

Alan

mmcamilo, obrigado pela ajuda, resolveu o problema ! Precisando estamos aí !


Amigo como vc conseguiu resolver isso ?
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar