全球FlexSim系统仿真中文论坛
标题:
使用命令插入表格标签
[打印本页]
作者:
zorsite
时间:
2018-6-7 16:38
标题:
使用命令插入表格标签
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
0 O9 x0 f, _" G) Z j' U
[attach]4413[/attach]
+ L) h: | c* M# Q
+ k9 M4 N4 Y6 p! p4 }% K! r0 |7 H
思路1:
1 ~% u$ v, @! U" Z3 W: B- S: H* c
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
5 b( d3 |* q! L) v. W5 D! D" z
. q# B4 a. s# H# u# m+ w
treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
; }3 ^; A, |# E+ j; J' `1 H
//treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
; B/ v- p. q5 e4 `
//此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
9 b! _. d) j4 C, S3 K
//表格中存放的数据类型与此无类,会在后面的在代码中定义。
9 o8 B1 t# ^) v9 N
( Z2 B3 e5 x; x' d. S
for (int i = 1; i <= 3; i++) {
& Z, z6 h! Y' v; | Z4 e# h/ |
string labeltablerowname=concat("类型" , numtostring(i));
* {2 c. ^* A7 m, h# F; l7 H
treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行
5 @: Q( `* `" W; M5 S
//第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
6 \; G2 e5 @) \4 r& t4 w
//第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
3 w- \% m" o. B1 f& [( I$ a
treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
& P/ c7 G; V( Q3 I
//因为该节点要存放数值,所以数据类型要设置正确。
! _3 A, ]+ ~ C/ W
int num=duniform(0,5);
: Z# F$ N% J6 T. Z. U5 ~; U" L
//setnodenum(labeltablecell,num);//为该数据单元赋值
6 ^0 \4 v0 s9 Z }) z% ~ t; p
settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
7 w, R4 z$ }2 v# o# v
}
$ ~" t# i: o% P; |7 f J
复制代码
思路2:
9 S+ c; _) h5 L. ]: r! ~
既然assertsubnode可以,那nodeinsertinto也行得通。
# T: h8 Q2 `* C1 M+ s1 E* X
treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
3 }; q. U' ~& V( j0 Y4 k
for (int i = 1; i <= 3; i++) {
9 l; A3 A0 D, G$ u- T5 o
treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行
V" w; R T; M1 p" ~
treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
7 d- z5 o, {2 t& \( c. F7 }
nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
6 R% S$ \% p+ J$ s
//虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。
8 `4 n9 U) d' a! Q$ O# e
int num=duniform(0,5);
1 q: H5 a7 I( E8 j
//setnodenum(labeltablecell,num);//为该数据单元赋值
. T, q$ B* k/ o. a& K
settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
e0 z! M+ K* z
}
复制代码
思路3:
! S' d/ W. l7 ^: C: _; W/ a
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
) d$ p* V- H: g5 S
treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
) u) G+ R" ?5 I3 k, g
settablesize(labeltable,3,1,DATATYPE_NUMBER);
8 U. p. t4 G, E3 a7 Q
for (int i = 1; i <= 3; i++) {
5 y% A7 z- Y& m: A5 x6 ?: g
settablenum(labeltable,i,1,duniform(0,5));
0 N0 Y D6 |* l- c9 u' y
}
复制代码
. D3 D; ^' Y( e l! a4 y
! B) q- h1 W0 C5 _" `/ g$ Q
9 b4 \* {! ]8 f' Q; E# G+ |
作者:
慧娴亚伦
时间:
2018-6-8 09:51
感谢分享!
& X+ M: }& `- J+ h* w
关键是建立起节点格式~
作者:
zjj0605
时间:
2018-6-11 17:49
谢谢大神的分享
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3