|
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:- b5 E. i9 g6 f# D
; i+ F& C! f: j* c0 Z! _. j
' C5 K+ q- C7 K9 y" X思路1:
' P9 D0 l6 o2 r5 b6 m使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。) S0 m1 ?; [! Y) T* }# H. A& R
% j& i1 J, o0 [; w3 i- E
- treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
& o& o+ \4 Z* v+ Z* F" I - //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
- M) k u8 P5 L$ \$ d - //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。9 W% M" f+ s0 m+ z6 I, t/ Z* m
- //表格中存放的数据类型与此无类,会在后面的在代码中定义。
+ x0 e. t6 N0 y% [3 z - & u0 F! `3 |7 N
- for (int i = 1; i <= 3; i++) {5 ?+ p/ _: C* t* V3 Q" Q
- string labeltablerowname=concat("类型" , numtostring(i));
' x. t+ |8 d' g - treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行
! ^; s# l: M' P# g" B - //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
: [& a a; h6 f$ D: U; } - //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。, f g' N( n0 L0 {- T: @& u
- treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
+ { ^2 [5 ^ k - //因为该节点要存放数值,所以数据类型要设置正确。
1 x9 `6 M' n3 E& B: P$ B% U1 b - int num=duniform(0,5);
, A2 x4 @" W1 O9 C+ F' I - //setnodenum(labeltablecell,num);//为该数据单元赋值* S' n7 y; |; S( D5 e- ~' b
- settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
3 Y& L( {; M0 l5 c$ Q - }+ J0 q4 K/ W. k; {6 O' ~+ u
复制代码 思路2:( v' C6 D8 e( d* C# V+ ?
既然assertsubnode可以,那nodeinsertinto也行得通。
/ C8 p5 p* u( z) r: _% G; D- treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字- |! u: B6 C6 z' U- e/ K
- for (int i = 1; i <= 3; i++) {
' C" k- k& ~5 Q' s$ ] - treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行' h6 t6 L% y' X7 H
- treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)$ v/ k7 y, d4 T H, I
- nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型; N% Z+ D+ I% X C2 R( v. Y
- //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。
/ i' h" |0 O: {& T* l+ T1 u4 M& z - int num=duniform(0,5);8 j/ V3 v7 k8 _3 `
- //setnodenum(labeltablecell,num);//为该数据单元赋值
5 f F/ R' C4 _ - settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
8 B, o3 ?1 H6 Q: c- c( o1 B5 e- o% x - }
复制代码 思路3:
2 k& a# P. v) A+ s+ }5 f既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?" ~7 f3 J n4 A! o3 Q
- treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
7 T& j. d, U6 \; p! L3 Q; y - settablesize(labeltable,3,1,DATATYPE_NUMBER); 8 e! c4 b7 C: k0 G
- for (int i = 1; i <= 3; i++) {* k4 F0 P# E) [" g9 [
- settablenum(labeltable,i,1,duniform(0,5));3 R# X& h5 ~" q+ P, w
- }
复制代码 + ~' C( M9 z6 {! j
% g$ T8 _3 x7 o' U" s6 t9 u9 T6 v3 v& _( j( W# N: ~
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|