数学建模社区-数学中国
标题:
关于treeview遍历,并添加子节点
[打印本页]
作者:
boyle
时间:
2005-2-2 10:32
标题:
关于treeview遍历,并添加子节点
我想实现这样的功能,遍历tree中的节点。树是单位的部门结构树,节点是其中部门,已经添加好的。我想遍历树中所有节点,如果没有子节点说明是单位中的最小部门,然后查询改部门的员工并添加到该部门以下。下面的代码,一直都出错,好像是内存读取错误。请帮忙,三拜~~~
- `+ T# s& r d- z
procedure Trs.TreeView1Click(Sender: TObject);
8 e' W& @. B; E4 S0 O+ |6 H
var node: TTreeNode;
% f2 M3 \2 y3 l, G# I
strnode:string;
5 n$ S8 s) B6 Q8 w7 G4 h
label ok;
/ s& ~$ ]7 N/ X, C, k
label haschild;
( {. C% i: N' H9 [9 S, J9 j3 a8 a
label nextnode;
+ t6 l7 m1 }! E0 H
begin
6 h6 C* n# X; d# a
node:=treeview1.TopItem;
$ J% H- V2 v8 M: j' x6 q$ l0 d
haschild: node:=getfirstchild(node);
: z2 O% b, {" F7 R9 P9 H
strnode:=node.Text;
. q' C0 `- O. G0 |5 Y" _
dm.qtree.Close;
7 [* V! B* v5 u; O5 E
dm.qtree.SQL.Clear;
, `$ Z |2 S8 a6 Q- C% Q' o5 k# X/ H
dm.qtree.SQL.Text:='select empname from empbasic where depid='+''''+strnode+'''';
2 q! C& a3 V- p7 h9 ^: c
dm.qtree.Open; //取得该部门下所有员工姓名
$ J. \$ ~, k9 W
if not(dm.qtree.IsEmpty) then //如果记录非空(即该部门下有员工)
1 r- [4 y1 A( F! \0 L& N( |
begin //将所有员工姓名都作为子节点添加
) d% n# M0 y' S
repeat
2 l( n* ]: g$ z$ y Y" C
strnode:=dm.qtree.fieldbyname('empname').AsString;
* n/ n3 { Z% g; N8 K+ E
treeview1.Items.AddChild(node,strnode);
8 S7 J3 K7 D' k4 T
dm.qtree.Next;
1 F* S$ x5 A3 w! `8 ?
until dm.qtree.Eof;
, Y+ [6 P7 P, A& G5 A! b. ]2 V: V
end;
6 W7 J1 b6 C+ g; U7 `
if not(node.IndexOf(node.Parent)=node.Parent.Count -1) then //如果当前节点不是同级节点最后一个
6 N8 \, k! M/ m4 p& Y' t8 a
begin
; h* B4 Y1 u9 [" m$ [% D5 h
nextnode: node:=node.getNextSibling; //取得下一个同级节点
! Y6 Z4 L, x7 W
goto haschild;
4 [1 S( z% h% `& ^1 S+ j! e* M
end
5 ^5 A, B2 e) s3 N) F
else
" e e( z6 {3 Y# h! }: g
begin
- N9 j! T. ~7 y7 b# {, ^
if node.Index =treeview1.Items.Count then goto ok
. P2 V" I( ^2 ?7 n+ E
else goto nextnode;
2 n/ W0 ^6 t4 J: s$ b" T+ G
end;
9 z- n' d2 H3 N- }4 Y: b0 v+ I2 Q* \
ok:null;
* {+ q' j: ?# s( Z9 ^( \1 f x
end;
作者:
ilikenba
时间:
2005-2-2 11:35
<
>我没有办法调试,不过感觉可能没什么错误,你把错误也发出来看看!</P>
作者:
xtmlj
时间:
2005-3-12 19:25
好
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5