我用treeview表示单位所有人,根是“全部”,然后分各处室、各处室下的人。这些都是从数据库中读出来的:
procedure tform1.writetoview;     //写treeview
var
  root,temp:ttreenode;
begin
  treeview1.Items.Clear;
////////////////////////////下为设置treeview
  leftquery.close;
  leftquery.SQL.Clear;
  leftquery.SQL.Add('select * from class order by classid');
  leftquery.Open;
  root:=treeview1.Items.Add(nil,'全部');  //root
  while not leftquery.Eof do
  begin
    rightquery.Close;
    rightquery.SQL.Clear;
    rightquery.SQL.Add('select * from tch where classid=:t order by tchname');
    rightquery.Parameters[0].Value:=leftquery.FieldValues['classid'];
    rightquery.Open;
    temp:=treeview1.Items.Addchild(root,leftquery.FieldValues['class']);
    while not rightquery.Eof do
    begin
      treeview1.Items.AddChild(temp,trim(rightquery.FieldValues['tchname']));
      rightquery.Next;
    end;
    leftquery.Next;
  end;
  allrecord;////所设置的查询所有人的记录的一个过程
end;
还有一个click事件,只要单击treeview就开始查询相应都是的记录
然后又设置的一个“刷新”,其中调用了writetoview这个过程,可每次执行“刷新”过后,只要单击树前面的“+”就会报错,说访问了0000008的非法地址,怎么回事???????????????????