1 有什么办法最快最没逼作用地把TreeView所有节点清空,因为我要从数据库里重新载入树,希望找到一种很快而且有效的办法把节点清空
2. 严重的问题,TreeView在用TreeView1.Items.AddFirst或TreeView1.Items.Add创建第一个节点的时候 总是出现错误 "Access violoation at address 0043c4ac in module 'project1.exe;.Read of address 000000004'"

解决方案 »

  1.   

    1.TreeView1.Items.Clear;
    2.把代码列出来看看
      

  2.   

    function Tform1.LoadTree:integer;
    var
      v_Class:string;
      J:integer;//计数器
    begin
       try
         ClsTree; //清空
       except   end;
       ADOQuery1.close;
      ADOQuery1.ConnectionString:=strConn;
      adoquery1.sql.clear;
      adoquery1.sql.add('select * from class');
      adoquery1.Prepared;
      adoquery1.open;
      adoquery1.First;
      //CurrentNode:=nil;  j:=0;  while not adoquery1.eof do
      begin
        v_Class:=adoquery1.FieldValues['Class'];
        ClassIDArr[J]:=adoquery1.FieldValues['ClassID'];
        try
         // if (TreeView1.Items.Count =0) then    CurrentNode:= TreeView1.Items.AddChild(nil,v_Class);
          CurrentNode:= TreeView1.Items.AddFirst(CurrentNode,v_Class);
        except
          showmessage('出错0');
        end;
        try
        AddSubNodw(CurrentNode,ClassIDArr[J]);
        except
           showmessage('出错');
        end;
        adoquery1.Next;
        j:=j+1
      end;
      ADOQuery1.close;
      result:=j;
    end;
    function  Tform1.AddSubNodw(node:TTreeNode;ClassID:integer):integer;//根据主目录键.增加子键
    var
       //ADOQuery2: TADOQuery;
       i:integer; //子节点总数   bv
    begin
       i:=0;
       //ADOquery2:=TADOQuery.Create(self);
       ADOQuery2.close;
       ADOquery2.ConnectionString:=strConn;
       adoquery2.close;
       adoquery2.sql.clear;
       adoquery2.sql.add('select NClass from Study where ClassID='+inttostr(ClassID));
       adoquery2.Prepared;
       adoquery2.open;
       adoquery2.First;
       while not adoquery2.eof do
       begin
         treeview1.Items.AddChild(node,adoquery2.FieldValues['NClass']);
          adoquery2.Next;
          i:=i+1;
       end;
       ADOQuery2.Close;
       //ADOQuery2.Free;
       result:=i;
    end;