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