全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

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

# [4 O, A6 K6 ?9 Z8 H& e
, H. @, j+ m% T! G" \思路1:
" M' c3 `3 `3 B, i使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。( D9 s$ a8 H( G; s

% I1 W% O9 p9 x4 j
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    ( ^& ]& c4 C9 x0 G% }
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);; V0 |3 w6 _8 |) }2 S
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。  |% ~* |- G- {, @, V$ q- \
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。9 G0 M4 @6 w1 L7 F
  5. ! |; q2 h4 K/ N: ~* G% D( R
  6. for (int i = 1; i <= 3; i++) {& V& [) A" B) b. p
  7.         string labeltablerowname=concat("类型" , numtostring(i));
    4 O0 X: h4 {% R1 _
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行4 B2 T& m' m6 O
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
    5 X5 k8 V! Y9 S: i6 y( ~9 `- R" U
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。
    # d5 L& x1 D+ a
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    * V% ?- I7 b6 U) H
  12.         //因为该节点要存放数值,所以数据类型要设置正确。          |( D) r$ l: g7 A! n
  13.         int num=duniform(0,5);+ @% U% R  b' V
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    - [! @/ A; ]6 x1 u( ]' V# K
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    ( V$ z/ R/ r% `
  16. }! _/ H3 |5 x7 G7 t4 a5 i1 @2 g
复制代码
思路2:* _( t% J+ p' _$ M0 h) y" q2 ?/ ^' R+ E
既然assertsubnode可以,那nodeinsertinto也行得通。
7 Y: G1 \1 A" G( t' y
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字6 ^0 K4 Y; m* S; R1 g6 @
  2. for (int i = 1; i <= 3; i++) {4 q0 _  u& |4 |( {6 b$ s9 r
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行$ \* O' ^& s; c) [+ G+ c9 j7 }
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)
    , _* x5 Y) H3 W# v
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型
    ( x5 A% O, d/ ?  q4 @( n! T) t
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。2 u+ j- N+ A6 T; a9 `: @; M' d
  7.         int num=duniform(0,5);9 o7 r  w- k% ^4 t, `2 n
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值* b. s$ A3 {. N, X7 a1 w9 N6 T
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。& m2 O/ U$ l6 H- O0 M  K' u# Y5 q# B
  10. }
复制代码
思路3:
* X  L% W  \$ q' k) b既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?2 Z3 E# H' ?4 b8 ^0 X9 y" v
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
    # p) P; n; O1 D4 G/ j3 t
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); ! f9 S1 I+ e$ q7 l5 r1 f3 S
  3. for (int i = 1; i <= 3; i++) {
    . N& M# m0 ^+ L9 S
  4.         settablenum(labeltable,i,1,duniform(0,5));
    . s( o) y* ]! e/ Y7 n
  5. }
复制代码

; Y: W. H( t% ^
: }3 Y) @, ]/ @$ p: a
  u% c# T7 r4 j3 A" j

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-6-30 18:40 , Processed in 0.085231 second(s), 14 queries .

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

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