W
wanglongb
Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟使用treeview遇到了麻烦,使用如下代码,很慢,请高手帮忙!! 还有当我点击一个节点,能知道他是第几层节点吗? pjwanglong2000@sohu.com (160分)<br />var
sql,sql1:string;
tempi: integer;
begin
sql:='select * from wuzibianma_dalei';
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(sql);
adoquery1.open;
while not adoquery1.eof do
begin
tempi := tv.Items.AddChild(tv.topitem,adoquery1.fieldbyname('物资大类').asstring).AbsoluteIndex;
sql1:='select * from wuzibianma_zhonglei where 大类代号=:sf';
adoquery2.close;
adoquery2.sql.clear;
adoquery2.sql.add(sql1);
adoquery2.Parameters.ParamValues['sf']:=adoquery1.fieldbyname('大类代号').asstring;
adoquery2.open;
while not adoquery2.eof do
begin
//加入中类
tv.Items.AddChild(tv.Items.Item[tempi],adoquery2.fieldbyname('物资中类').asstring);
adoquery2.next;
end;
adoquery1.next;
end;
tv.AutoExpand:=true;
end;
这段代码可以实现在窗体打开时在treeview里显示物资大类,并在物资大类下加入物资中类,但是
因为我的中类很多,打开需要很长时间,能否在打开窗体先只显示物资大类,电击此大类时再在这个大类
下填入物资中类,这样可以节约时间,可是怎么做呢?
sql,sql1:string;
tempi: integer;
begin
sql:='select * from wuzibianma_dalei';
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add(sql);
adoquery1.open;
while not adoquery1.eof do
begin
tempi := tv.Items.AddChild(tv.topitem,adoquery1.fieldbyname('物资大类').asstring).AbsoluteIndex;
sql1:='select * from wuzibianma_zhonglei where 大类代号=:sf';
adoquery2.close;
adoquery2.sql.clear;
adoquery2.sql.add(sql1);
adoquery2.Parameters.ParamValues['sf']:=adoquery1.fieldbyname('大类代号').asstring;
adoquery2.open;
while not adoquery2.eof do
begin
//加入中类
tv.Items.AddChild(tv.Items.Item[tempi],adoquery2.fieldbyname('物资中类').asstring);
adoquery2.next;
end;
adoquery1.next;
end;
tv.AutoExpand:=true;
end;
这段代码可以实现在窗体打开时在treeview里显示物资大类,并在物资大类下加入物资中类,但是
因为我的中类很多,打开需要很长时间,能否在打开窗体先只显示物资大类,电击此大类时再在这个大类
下填入物资中类,这样可以节约时间,可是怎么做呢?