procedure destroytree(); var i: integer; begin tvdept.onchange := nil; for i:=0 to tvdept.items.count-1 do dispose(pdeptinfo(tvdept.items[i].data)); tvdept.items.clear; end;
procedure builddepttree(); var node: ttreenode; lpdept: pdeptinfo; begin destroytree();
procedure onrefreshemployee(sender: tobject; node: ttreenode); var strsql: string; begin if tvdept.selected <> nil then strsql := 'select * from employee where dpid='+inttostr(pdeptinfo(tvdept.selected.data)^.dpid else strsql := 'select * from employee where 1 <0'; //没选中部门,则没有任何人员记录。 生成记录集 end;
最后,模块关闭的时候,记得把树销毁回收资源!
发表于:2007-09-18 09:29:583楼 得分:0
如果这个节点下面还有子节点,怎么办?
发表于:2007-09-18 09:35:224楼 得分:0
自己东东脑筋吧,不要不加思索就问,一个节点如果下面还有子节点,所有子节点可遍历得到,其对应的部门id也是可以获取得到,如果你想把归属部门人员全部罗列,那就用 dpid=节点1.部门id or dpid=节点2.部门id...