全球FlexSim系统仿真中文论坛

搜索
查看: 6114|回复: 2
打印 上一主题 下一主题

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:6 N' ^4 c5 {6 M7 P3 e% i- Y# X5 q  n( z2 i

& V& U) x5 j4 E& M! V! G
! ]" w- W5 o1 a  O0 g思路1:7 e0 e5 V) E' P8 r& M- z: I+ `% D3 P' \
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。4 S7 o$ y2 h- q8 \' l% }
& Y  T& {8 Z0 T0 I6 M
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    3 K; S1 g8 y7 s# ]( [
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);) x  ^: I0 I* D# x
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。6 R1 j! ^9 m" w* B$ G  Y- ~+ E
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。, X, j+ f. @$ ]9 ^9 V. A4 G
  5. ( x" i. n5 ?% ^1 H7 }) |0 [
  6. for (int i = 1; i <= 3; i++) {( P9 ^% h2 n5 q: u
  7.         string labeltablerowname=concat("类型" , numtostring(i));' G3 P$ |& v# F
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行& f1 N  F; K. K0 G
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
    ! _4 f1 k; F. D5 j
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。$ J+ P* R2 e* N' s1 f
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    ' H7 j6 C# r: I1 f! a* e) H
  12.         //因为该节点要存放数值,所以数据类型要设置正确。       
    8 e5 S! q7 ?6 k. _+ _
  13.         int num=duniform(0,5);. y+ i! W9 n% J6 A6 D1 W
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值% F2 c- B/ }" F  M1 _
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。$ `9 M: g  r9 y
  16. }1 C1 }+ [, h7 N+ W4 m! ]
复制代码
思路2:5 p# J7 P0 E& J" ?! {
既然assertsubnode可以,那nodeinsertinto也行得通。
8 p4 S$ N; G+ ]" Y- |
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    $ f4 I1 d9 m# a. l" E( [
  2. for (int i = 1; i <= 3; i++) {
    + H4 \8 x5 c" R) O! w1 ~3 v
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行; {/ m4 _2 g1 Z. U- I+ R; [
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    ) u/ C+ b9 s6 v* X5 Y7 y0 h/ r
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
    : |9 v2 _" ]  Q) |# c, o  a
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。! q/ a7 h; n( @9 r# a; f
  7.         int num=duniform(0,5);, |0 X8 D& F( ^# k, [. @
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    . D9 [0 ?+ s6 \
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。! w# {0 G* `+ s& a2 v. S
  10. }
复制代码
思路3:" d7 l9 ~. {/ E9 r' S2 C( d
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
' h) U% u5 ~# J4 S+ Z
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签. r0 b, [% g0 S: Y& b
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER);
    # ~0 j4 t4 v* {
  3. for (int i = 1; i <= 3; i++) {
    $ ?! t; f; @3 h, r8 D; T
  4.         settablenum(labeltable,i,1,duniform(0,5));; P9 z6 E/ s  x; _, {
  5. }
复制代码

$ I+ Q. y) V: x3 m0 f/ {  w* P  R8 L; C/ A- M
2 \* c7 r$ y  z6 @1 r4 ^

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
2#
慧娴亚伦 发表于 2018-6-8 09:51:50 | 只看该作者
感谢分享!# r7 ~) U6 K4 K+ R6 T
关键是建立起节点格式~
3#
zjj0605 发表于 2018-6-11 17:49:48 | 只看该作者
谢谢大神的分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2025-9-6 10:33 , Processed in 0.079611 second(s), 14 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表