全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
- A" P9 v! H5 c/ e; k+ g* e
9 [" o- u" z( Z8 Z9 d* \* H6 r$ j3 b7 _
思路1:
' b% O6 q" L  k7 X7 R使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
0 j, p1 X' ~9 j- s# i
! m, y& ?) _/ o& ?( p
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。" o. |4 j1 T$ @3 _& T/ m+ N$ ]) W
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    + v% t# A4 \$ @
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。2 M8 S8 r! Z( g; T, |1 x% K& O
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。; D# k" @2 h3 B5 X9 p, o
  5. ; t2 G: A- F  P; P) D! x
  6. for (int i = 1; i <= 3; i++) {
    ! N9 x- y' M; [7 _
  7.         string labeltablerowname=concat("类型" , numtostring(i));" W  a0 J3 Y/ ]! I) d5 B
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行: W$ ]& A7 ?# n& `+ [* f
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
    : @  O( P0 q' I: a0 n  a
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。- M6 X+ ^2 Q7 W5 F. n& o
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)5 v2 g3 G$ T; P
  12.         //因为该节点要存放数值,所以数据类型要设置正确。        2 a) j  x1 ?) V; u) f2 v
  13.         int num=duniform(0,5);* m9 k0 v: ~7 I! w3 {6 l
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值! F- z+ j) N) s: }1 E
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。8 d$ Q4 \+ T' \* U7 ^
  16. }/ A- I, E. A  o3 A6 X" X7 Y( K
复制代码
思路2:! D) C, D: {) c! f
既然assertsubnode可以,那nodeinsertinto也行得通。
/ G0 ]9 i6 p& [% W7 N6 M3 Z
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    0 Z0 l3 S3 a6 q5 c! ]
  2. for (int i = 1; i <= 3; i++) {5 f# O* b5 b; ]# P
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行
    6 R* V7 d# ^0 j
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)! J7 e! [4 U! Q9 u3 z( i
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型, A; z2 Y5 C0 k- z
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。
    * O4 L. G4 ]. p$ m
  7.         int num=duniform(0,5);+ M7 }$ |# p: g/ B8 @2 r
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    & s/ G$ {8 @9 @. ]2 N, Z4 k0 g
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    5 {! O1 E7 f( P5 e+ q
  10. }
复制代码
思路3:/ j& A# G' S9 E4 ^4 t
既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
5 R. ^) X# s" e
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签5 x: o, {, ~9 V1 p( D9 v) F7 k
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); 3 l3 [9 f1 B! v3 y0 T6 z& s
  3. for (int i = 1; i <= 3; i++) {
    ( q8 Q9 s$ H* F, t& z8 R# I
  4.         settablenum(labeltable,i,1,duniform(0,5));
    $ L  `+ C, E/ n, Q# g& _# q
  5. }
复制代码
$ A& A5 s8 Z9 b7 D% V) N/ W; h
8 g9 a* Z4 \6 {5 n

: q: F# X! I$ m2 q0 G

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-29 14:04 , Processed in 0.086266 second(s), 14 queries .

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

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