- 在线时间
- 0 小时
- 最后登录
- 2005-2-2
- 注册时间
- 2004-5-13
- 听众数
- 0
- 收听数
- 0
- 能力
- 0 分
- 体力
- 64 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 20
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   15.79% 该用户从未签到
 |
我想实现这样的功能,遍历tree中的节点。树是单位的部门结构树,节点是其中部门,已经添加好的。我想遍历树中所有节点,如果没有子节点说明是单位中的最小部门,然后查询改部门的员工并添加到该部门以下。下面的代码,一直都出错,好像是内存读取错误。请帮忙,三拜~~~
, h/ ]% m% X2 v! s6 ]procedure Trs.TreeView1Click(Sender: TObject);2 A0 d8 p' \! g; o, ]
var node: TTreeNode;* m7 B3 _- H9 ] D1 B
strnode:string;& U! r3 O8 E y8 {1 D. [) ?; [
label ok;' F4 U6 {* V. `8 C, ~/ V- ?
label haschild;
' _' t, k k/ K$ L6 @ label nextnode;4 r2 [: Y. i( g" a
begin& U: o4 @/ R( Y
node:=treeview1.TopItem;! e. ^* L+ x7 P! w! l% W/ i
haschild: node:=getfirstchild(node);, v% z6 \$ T/ v( X; M
strnode:=node.Text;1 e! r9 J2 ^8 [, C& P, e
dm.qtree.Close;
. r7 {: \& g+ Y: c' k) h. S* } dm.qtree.SQL.Clear;
3 R- p$ {" r+ I4 T2 N dm.qtree.SQL.Text:='select empname from empbasic where depid='+''''+strnode+'''';# n* r. }; h+ i1 y" |% {
dm.qtree.Open; //取得该部门下所有员工姓名
; c, _$ G4 u- M' v if not(dm.qtree.IsEmpty) then //如果记录非空(即该部门下有员工)
5 h K6 P3 b0 p& \! \ p begin //将所有员工姓名都作为子节点添加4 C. u# J. [' A" D) S
repeat$ a7 w, k. \: U5 O" [+ b: K
strnode:=dm.qtree.fieldbyname('empname').AsString;
/ d0 m5 i t$ l1 u0 a Z5 N0 Z0 r treeview1.Items.AddChild(node,strnode);
* }" {. P! @% _5 U% _4 G dm.qtree.Next;8 E4 j' A; g! v' g
until dm.qtree.Eof;5 [) Q0 p+ b4 \+ f" [. a
end;2 d1 G. e) _4 M8 |8 ] u
if not(node.IndexOf(node.Parent)=node.Parent.Count -1) then //如果当前节点不是同级节点最后一个9 P- B! l2 C9 z; ?8 i$ D9 u
begin8 c( A$ r0 a0 c7 h% A. ~
nextnode: node:=node.getNextSibling; //取得下一个同级节点- z. I0 O$ o7 R$ g$ X
goto haschild;
3 N" \2 [- M' k* w/ C8 E8 A- J end
. @; I7 i' }/ k& [. L else* r& m" P7 H* b! E* ]: h
begin3 S8 _5 ^9 u3 S# K
if node.Index =treeview1.Items.Count then goto ok
5 k6 o2 v& M5 W& P' Z# ] else goto nextnode;# w2 S& M, ?+ ^# e( J: q
end;3 ] i6 s& O$ h: A
ok:null;
~4 k, O+ A5 `$ g2 U% X/ G5 |end; |
zan
|