全球FlexSim系统仿真中文论坛

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

使用命令插入表格标签

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

' C5 K+ q- C7 K9 y" X思路1:
' P9 D0 l6 o2 r5 b6 m使用assertsubnode命令插入两次子节点来完成标签表格中的一个单元格。) S0 m1 ?; [! Y) T* }# H. A& R
% j& i1 J, o0 [; w3 i- E
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签。
    & o& o+ \4 Z* v+ Z* F" I
  2. //treenode labeltable=assertlabel(item,"order",DATATYPE_STRING);
    - M) k  u8 P5 L$ \$ d
  3. //此处增加什么类型的标签都可以。即使是文本型标签,也可以在表格中存放数值型数据。9 W% M" f+ s0 m+ z6 I, t/ Z* m
  4. //表格中存放的数据类型与此无类,会在后面的在代码中定义。
    + x0 e. t6 N0 y% [3 z
  5. & u0 F! `3 |7 N
  6. for (int i = 1; i <= 3; i++) {5 ?+ p/ _: C* t* V3 Q" Q
  7.         string labeltablerowname=concat("类型" , numtostring(i));
    ' x. t+ |8 d' g
  8.         treenode labeltablerow=assertsubnode(labeltable,labeltablerowname);//在标签中增加一行
    ! ^; s# l: M' P# g" B
  9.         //第二参数不能省略,所以必须为该行起一个名字。如果名字相同的话,只会插入一个的节点。
    : [& a  a; h6 f$ D: U; }
  10.         //第三参数可以省略。该行节点不存放具体数据,所以数据类型可以留空。, f  g' N( n0 L0 {- T: @& u
  11.         treenode labeltablecell=assertsubnode(labeltablerow,"数量",DATATYPE_NUMBER);//在新增行中加入一列(一个存放数据的单元格)
    + {  ^2 [5 ^  k
  12.         //因为该节点要存放数值,所以数据类型要设置正确。       
    1 x9 `6 M' n3 E& B: P$ B% U1 b
  13.         int num=duniform(0,5);
    , A2 x4 @" W1 O9 C+ F' I
  14.         //setnodenum(labeltablecell,num);//为该数据单元赋值* S' n7 y; |; S( D5 e- ~' b
  15.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    3 Y& L( {; M0 l5 c$ Q
  16. }+ J0 q4 K/ W. k; {6 O' ~+ u
复制代码
思路2:( v' C6 D8 e( d* C# V+ ?
既然assertsubnode可以,那nodeinsertinto也行得通。
/ C8 p5 p* u( z) r: _% G; D
  1. treenode labeltable=nodeinsertinto(node(">labels", item));//在临时实体上增加一个标签,该标签没有名字- |! u: B6 C6 z' U- e/ K
  2. for (int i = 1; i <= 3; i++) {
    ' C" k- k& ~5 Q' s$ ]
  3.         treenode labeltablerow=nodeinsertinto(labeltable);//在标签中增加一行' h6 t6 L% y' X7 H
  4.         treenode labeltablecell=nodeinsertinto(labeltablerow);//在新增行中加入一列(一个存放数据的单元格)$ v/ k7 y, d4 T  H, I
  5.         nodeadddata(labeltablecell,DATATYPE_NUMBER);//指定该单元格节点的数据类型为数值型; N% Z+ D+ I% X  C2 R( v. Y
  6.         //虽然命令帮助中没有说明,但nodeinsertinto返回对新插入节点的引用。
    / i' h" |0 O: {& T* l+ T1 u4 M& z
  7.         int num=duniform(0,5);8 j/ V3 v7 k8 _3 `
  8.         //setnodenum(labeltablecell,num);//为该数据单元赋值
    5 f  F/ R' C4 _
  9.         settablenum(labeltable,i,1,num);//也可以使用settablenum命令赋值。
    8 B, o3 ?1 H6 Q: c- c( o1 B5 e- o% x
  10. }
复制代码
思路3:
2 k& a# P. v) A+ s+ }5 f既然标签中存放的是表格,那是不是可以使用表格相关命令呢?直接在节点上插入一张表格?" ~7 f3 J  n4 A! o3 Q
  1. treenode labeltable=assertlabel(item,"order",DATATYPE_NUMBER);//在临时实体上增加一个标签
    7 T& j. d, U6 \; p! L3 Q; y
  2. settablesize(labeltable,3,1,DATATYPE_NUMBER); 8 e! c4 b7 C: k0 G
  3. for (int i = 1; i <= 3; i++) {* k4 F0 P# E) [" g9 [
  4.         settablenum(labeltable,i,1,duniform(0,5));3 R# X& h5 ~" q+ P, w
  5. }
复制代码
+ ~' C( M9 z6 {! j

% g$ T8 _3 x7 o' U" s6 t9 u9 T6 v3 v& _( j( W# N: ~

本帖子中包含更多资源

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

x
2#
慧娴亚伦 发表于 2018-6-8 09:51:50 | 只看该作者
感谢分享!0 H, u! M; i& ^0 ?" v
关键是建立起节点格式~
3#
zjj0605 发表于 2018-6-11 17:49:48 | 只看该作者
谢谢大神的分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-6 04:09 , Processed in 0.067923 second(s), 14 queries .

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

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