你的程序书写风格太差了。
我看了就头疼,没看完……

解决方案 »

  1.   

    这样可以了吧,呵呵
    table 的内容如下:
    id   pid  name ...
    1    0    aa
    2    0    bb
    3    1    cc
    4    1    dd
    5    3    ee
    6    2    ff欲显示树的图形如下:
      aa
        |--cc
        |    |--ee
        |--dd
      bb
        |--ffprocedure CreateTree(var ANode : TTreeNode; var pid : integer);
    var
      id : integer;  sname : string;
      bmk : TBookMark;
    begin
      with form1,Query1 do
      begin
        filter := 'pid=' + inttostr(pid);
        while not Eof do
        begin
          sname := FieldByName('name').AsString;
          Anode := Treeview.Items.AddChild(Anode, sname);
          id := FieldByName('ID').AsInteger;
          bmk := GetBook;
          CreateTree(ANode,id );
          Anode := Anode.Parent;
          filter := 'pid=' + inttostr(pid);
          if Query1.BookValid( bmk ) then
          begin
            GotoBook(bmk); FreeBook(bmk);
          end;
          next;
        end;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      t : TTreeNode;
      Id : integer;
    begin
      treeview.Items.clear;
      t := nil; id := 0;  createtree(t,id);
    end;