全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

[复制链接]
跳转到指定楼层
1#
zorsite 发表于 2018-6-7 16:38:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
assertlabel和setlabel可以新增标签。但是如果想要增加一个标签存放表格,该如何处理呢?在手册中没有发现相关的命令,于是自己想办法来解决了。仔细观察手工插入的三行一列的表格标签,发现其树结构如下:
. |( X9 J+ _5 n1 d, d) X6 I6 x) r, `- m9 ]$ ]+ a" I

5 N) f; M  @9 t) r; b1 g* p& i思路1:
0 @) e+ C$ a6 `2 P& V% A, F: i# l使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。
. W% E- j8 l' h* P: z& n! |3 b$ e7 d% W7 `' S! j
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。6 Z% a0 p9 v1 w$ U; n
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    # a0 U; r% u5 x# N  r  ?+ `4 U
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。
    ; x0 x, @; h* B7 e
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。5 n' N2 ]* Z- k, Y9 K; l

  5. / W* U& Y4 ]. @! j% G
  6. for (int i = 1; i <= 3; i++) {- a& B+ [* o) e$ ^! X% ?. ^7 e
  7.         string labeltablerowname=concat("类型" , numtostring(i));
    " K0 E* n: `2 U$ c1 X0 J8 j
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行' T) [+ `8 N: w( ^6 W: Z  N
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。+ d1 E' n. o# ]1 P
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    $ m# N* I: d9 }& b$ t* ]; t. q
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    8 |( S7 ~% m8 `/ s) t/ F3 D
  12.         //因为该节点要存放数值,所以数据类型要设置正确。        / e& s1 d( }8 E" `! z( a. I- Y7 V
  13.         int num=duniform(0,5);
    & X+ E+ s2 L4 t6 [" b4 v. u  E4 v* m
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    1 g2 m4 O! E/ |' z8 O6 t
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    % e7 f+ _# Z8 e% n" [
  16. }
    * Y% |9 N+ q& G* W: _, L5 i
复制代码
思路2:
8 }# V0 X: x( F既然assertsubnode可以,那nodeinsertinto也行得通。
0 b  M- w& ~& F' b
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字
    1 D# m& A1 h& T, G; }
  2. for (int i = 1; i <= 3; i++) {
    1 g4 y4 T8 h9 H" r) x7 `# c
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行3 \0 j; p  e4 a
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    9 h8 q& i8 u) h
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型0 V* W" [, E2 t/ F
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。
    6 x9 A: U8 n: B: T! _: D; X
  7.         int num=duniform(0,5);
    + G0 }" p- F/ w5 D  t6 Z6 C
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值/ E  w/ j4 ]* l! B
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    * Z7 y0 ~1 K& Q& i& I
  10. }
复制代码
思路3:
8 N5 u; n- j; r% L9 q5 v既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?
( G  ^9 e9 N7 c) Q8 O
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签, Q3 P+ W+ O0 x$ X* o
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER);
    3 Z0 u* B2 A) T! {  C; A
  3. for (int i = 1; i <= 3; i++) {
    * n  t( {  q( @- u6 {
  4.         settablenum(labeltable,i,1,duniform(0,5));  ]$ @0 y1 w7 e
  5. }
复制代码

2 q9 g! b: Z' i
' h+ \1 M7 j/ L, D1 _# y/ y; Y( `) ^8 A! E

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-28 05:22 , Processed in 0.077559 second(s), 14 queries .

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

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