请问各位:
我通过两个WHILE语句从数据库里生成一棵树,由于树的生成过程比较慢,所以想用一个PROGRESSBAR来显示树的生成进度。
请问如何来做?
谢谢。附:该树的生成过程:
SQL_Str1 := 'select distinct 院片名称 from View_树型楼栋';
Func_RunSQL(ADOQuery1,SQL_Str1,'Open');
adoquery1.first;
While not adoquery1.EOF do
begin
ProgBar.Stepit;
n1:=treeview1.Items.Add(treeview1.Selected,adoquery1.FieldValues['院片名称']);//增加子节点
adoquery2.close;
adoquery2.sql.Clear;
SQL_Str2 := 'select 楼栋名称,楼栋代码 from View_树型楼栋 where 院片名称='+ Quotedstr(adoquery1.FieldByName('院片名称').AsString);
adoquery2.sql.Add(SQL_Str2);
adoquery2.open;
adoquery2.First;
while not adoquery2.eof do
begin
T_LDDM := adoquery2.FieldValues['楼栋代码'];
T_LDMC := adoquery2.FieldValues['楼栋名称'];
Node_Child := T_LDDM+'|'+T_LDMC;
treeview1.Items.AddChild(n1,Node_Child);
adoquery2.next;
end;
adoquery1.NEXT;
end;
我通过两个WHILE语句从数据库里生成一棵树,由于树的生成过程比较慢,所以想用一个PROGRESSBAR来显示树的生成进度。
请问如何来做?
谢谢。附:该树的生成过程:
SQL_Str1 := 'select distinct 院片名称 from View_树型楼栋';
Func_RunSQL(ADOQuery1,SQL_Str1,'Open');
adoquery1.first;
While not adoquery1.EOF do
begin
ProgBar.Stepit;
n1:=treeview1.Items.Add(treeview1.Selected,adoquery1.FieldValues['院片名称']);//增加子节点
adoquery2.close;
adoquery2.sql.Clear;
SQL_Str2 := 'select 楼栋名称,楼栋代码 from View_树型楼栋 where 院片名称='+ Quotedstr(adoquery1.FieldByName('院片名称').AsString);
adoquery2.sql.Add(SQL_Str2);
adoquery2.open;
adoquery2.First;
while not adoquery2.eof do
begin
T_LDDM := adoquery2.FieldValues['楼栋代码'];
T_LDMC := adoquery2.FieldValues['楼栋名称'];
Node_Child := T_LDDM+'|'+T_LDMC;
treeview1.Items.AddChild(n1,Node_Child);
adoquery2.next;
end;
adoquery1.NEXT;
end;
ProgBar.Max:=ADOQuery1.RecordCount;
ProgBar.Stepit;不對嗎?
progressbar1.min:=0;
progressbar1.max:={循环次数,或循环次数+步骤};
循环progressbar1.position:=progressbar1.position+1;即可