以树形图显示我国行政区划结构,按照省、市、县的层次结构显示,该数据表的结构如下:t_xtgl_xzqh
-----------------------------------------------------------
qybh            qymc       sjqybh        qyjs
区域编号(PK)   区域名称   上级区域编号   区域等级
-----------------------------------------------------------
已经收录的记录一共只有2762条。编译运行时,每次要等待1分钟左右的时间才能显示主窗体,显然不能满足设计要求。特请教各位高手,为什么程序运行的时间会这么长,有没有更好的实现方式?代码如下,请指教!
------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
var
  ParentNode:TTreeNode;
  NextNode:TTreeNode;
begin
  tree_gys.Items.Clear;  //清除供应商树形图
  ParentNode:=tree_gys.Items.Add(nil,'全国');   //顶层节点
  with Query_tree1 do
  begin
    Close;
    Sql.Clear;
    Sql.Add('select * from t_xtgl_xzqh');
    Sql.Add('where qyjs=''1''');
    Sql.Add('order by qybh');
    Open;
    while not eof do
    begin
      NextNode:=tree_gys.Items.AddChild(ParentNode,fieldbyname('qymc').AsString);//第一层节点
      with Query_tree2 do
      begin
        Close;
        Sql.Clear;
        Sql.Add('select * from t_xtgl_xzqh');
        Sql.Add('where sjqybh='+quotedstr(Query_tree1.Fieldbyname('qybh').AsString));
        Sql.Add('and qyjs=''2''');
        Open;
        if recordcount>=1 then
        while not eof do
        begin
          NextNode:=tree_gys.Items.AddChild(NextNode,fieldbyname('qymc').AsString);//第二层节点
          with Query_tree3 do
          begin
            Close;
            Sql.Clear;
            Sql.Add('select * from t_xtgl_xzqh');
            Sql.Add('where sjqybh='+quotedstr(Query_tree2.Fieldbyname('qybh').AsString));
            Open;
            if recordcount>=1 then
            while not eof do
            begin
              tree_gys.Items.AddChild(NextNode,fieldbyname('qymc').AsString);//第二层节点
              next;
            end;
            NextNode:=NextNode.Parent;
          end;
          next;
        end;
      end;
      next;
    end;
  end;
end;
---------------------------------------------------------------------