boyle 发表于 2005-2-2 10:32

关于treeview遍历,并添加子节点

我想实现这样的功能,遍历tree中的节点。树是单位的部门结构树,节点是其中部门,已经添加好的。我想遍历树中所有节点,如果没有子节点说明是单位中的最小部门,然后查询改部门的员工并添加到该部门以下。下面的代码,一直都出错,好像是内存读取错误。请帮忙,三拜~~~
procedure Trs.TreeView1Click(Sender: TObject);
var node: TTreeNode;
    strnode:string;
    label ok;
    label haschild;
    label nextnode;
begin
  node:=treeview1.TopItem;
haschild: node:=getfirstchild(node);
  strnode:=node.Text;
  dm.qtree.Close;
  dm.qtree.SQL.Clear;
  dm.qtree.SQL.Text:='select empname from empbasic where depid='+''''+strnode+'''';
  dm.qtree.Open;  //取得该部门下所有员工姓名
  if not(dm.qtree.IsEmpty) then   //如果记录非空(即该部门下有员工)
  begin   //将所有员工姓名都作为子节点添加
    repeat
    strnode:=dm.qtree.fieldbyname('empname').AsString;
    treeview1.Items.AddChild(node,strnode);
    dm.qtree.Next;
    until dm.qtree.Eof;
  end;
  if not(node.IndexOf(node.Parent)=node.Parent.Count -1) then //如果当前节点不是同级节点最后一个
  begin
nextnode:    node:=node.getNextSibling;  //取得下一个同级节点
    goto haschild;
  end
  else
  begin
    if node.Index =treeview1.Items.Count then goto ok
    else goto nextnode;
  end;
ok:null;
end;

ilikenba 发表于 2005-2-2 11:35

<P>我没有办法调试,不过感觉可能没什么错误,你把错误也发出来看看!</P>

xtmlj 发表于 2005-3-12 19:25

页: [1]
查看完整版本: 关于treeview遍历,并添加子节点