全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
4 S: g5 m# R! I! P' w& d% R
2 Y; M# I& s4 N* `, E
: M! W8 d" U' K+ M; u0 c! d思路1:* P" H1 o% Y" ^& n/ O
使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
9 ?# o6 H/ _- R3 r% ~
; {( b/ Q* r; T" c0 a) [2 D' w; n
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。+ ]2 A+ g- Y( ~
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    % H; p7 u. Y* L9 g  ]4 q2 \/ I
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
    & j; a, f9 J9 l- \% p/ m0 ]
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。* ?2 I1 Z$ k7 y# |

  5. - a( U$ f' p( y( ]- ^5 M1 q, E5 e
  6. for (int i = 1; i <= 3; i++) {
    & v5 i, X& x6 @+ P  T
  7.         string labeltablerowname=concat("类型" , numtostring(i));
    % T! V) {1 M( u0 r) G& f4 C
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行. t0 i# X6 N, i: E, F6 f9 T3 ~" v
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。! ~) R7 F& s: H9 n& E6 j
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    . J6 A4 z0 e: U% K6 i* x* N& {
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    / b$ }& _3 F" o
  12.         //因为该节点要存放数值,所以数据类型要设置正确。       
    2 G+ {. H  \+ o$ C
  13.         int num=duniform(0,5);
    9 A5 H6 T% Y! L4 w
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值! U9 |; j  z2 U/ ]' x0 C
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。7 y- Q' [: O- L* S% e! J
  16. }
    % J: l. f3 [, y3 b- N3 N
复制代码
思路2:
% c8 ?% ~/ |. t) Z: M既然assertsubnode可以,那nodeinsertinto也行得通。
# O, p4 W' I. A# M. M% N: w
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    7 ?" }& s6 P5 ?
  2. for (int i = 1; i <= 3; i++) {# H+ w2 m  q4 i4 G6 L4 W& X
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行
    ) m6 m5 v) D6 a0 D5 K" W0 x" h
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    ! k* H0 M) v# d0 ~4 n' S; H) }
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
    9 R/ T% i, ~7 X# I1 p
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。0 W3 m1 t/ l# S5 l* |. t+ o# d
  7.         int num=duniform(0,5);
    8 l# y" e( m% {- u5 |" N& b
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值" I9 `. q; g/ M
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    ! n3 U! z- M- T& A0 T7 h5 r
  10. }
复制代码
思路3:
9 q/ v7 i8 p+ S& c, i既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?  ~- b. L# [  N" y8 N( l2 Q7 |
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
    ) S+ X; y, V/ B7 o6 |. x: ]
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); . {. W$ e. v4 `
  3. for (int i = 1; i <= 3; i++) {
    . h) S1 ]) t3 e5 A3 N: S
  4.         settablenum(labeltable,i,1,duniform(0,5));
    8 i, e* f, w: p0 Y7 H
  5. }
复制代码

. p3 A5 G1 w8 r. }, e& k/ ~
, u$ j1 A% l" w! _; f5 o. S. _) r5 [# H, n' R* l, H* y2 D

本帖子中包含更多资源

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

x
2#
慧娴亚伦 发表于 2018-6-8 09:51:50 | 只看该作者
感谢分享!  e5 H8 _4 x1 R$ e1 `
关键是建立起节点格式~
3#
zjj0605 发表于 2018-6-11 17:49:48 | 只看该作者
谢谢大神的分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-6 06:06 , Processed in 0.069642 second(s), 14 queries .

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

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