全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
" ~: f2 `7 W9 L7 @  ?; I
4 `) C, W1 K1 A$ W; ~2 f0 I) h! D( c8 D( n+ q! T+ ~
思路1:
8 \3 Y& p8 J5 L: m1 R. i使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
2 s( A) Z7 k5 M5 n( ?8 X7 r
/ Y) S, Q, r+ R  h
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    0 m7 T* R7 @5 O% l1 A
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    5 ^  V/ U% X" L7 `# @
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
    # c7 q& g7 j* G" ^
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。& X' N1 o- ?" f# [

  5. 1 `! C' {. E/ i
  6. for (int i = 1; i <= 3; i++) {
    : T- S+ v2 f  W; u% N/ a
  7.         string labeltablerowname=concat("类型" , numtostring(i));) t/ L7 k. [9 F8 o
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行) O& U$ r$ p6 S9 T, J" l
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。" z6 L% n5 K  H7 X
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    ) S; d- }8 g* U( l
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    4 R2 Q3 m' J" b$ |' @$ P7 _3 [
  12.         //因为该节点要存放数值,所以数据类型要设置正确。       
    1 `0 O$ [; U5 H, a
  13.         int num=duniform(0,5);
    ) Y( Y3 _' X! a* |9 E* s
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    * q: o( e8 z9 C9 r1 _7 n" }
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    9 l% {% @& z" {3 C' \) y
  16. }6 {  G4 `' \, A9 }  U
复制代码
思路2:7 t- U2 m8 D3 O& U# V! T
既然assertsubnode可以,那nodeinsertinto也行得通。
$ _# O7 q  @6 y0 T2 G
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    5 t, O' I: J; s' V
  2. for (int i = 1; i <= 3; i++) {! f" S2 L0 s( n7 i) g* U! N
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行
    ( {8 Z) t6 `# G1 e* p
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    / O1 J( c( {  Z6 q% U5 A' p
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
    8 [# n) i0 k4 W4 w) `
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。/ A2 G) d1 f( X
  7.         int num=duniform(0,5);+ B6 \5 l4 |+ L' |
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值9 U, H* I& p0 z* K( K) ]
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。. }  \7 O, d* W$ ^
  10. }
复制代码
思路3:
/ v2 b" p4 t/ @1 D4 V6 q既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?/ N7 E8 r) P1 }. K6 g  I+ q, O
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
      y$ F6 @# N7 l% Z. L' Q
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); 4 X5 b/ P# G0 K/ N
  3. for (int i = 1; i <= 3; i++) {
    ; [8 F$ \7 T. _
  4.         settablenum(labeltable,i,1,duniform(0,5));
    8 s. X. x" |/ q' i; I* e
  5. }
复制代码
5 M) ^  o' Q9 A8 B& O
! o+ C& o, p/ w! l3 T, \

# N: z$ Z9 Q) }+ u: Y7 Q

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-28 12:43 , Processed in 0.074545 second(s), 14 queries .

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

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