趋势中的index、numitems、itemvisible属性的具体用法

我现在打算只做一张趋势,可以增加笔,减少笔,在上面可以做趋势分析,因此我想知道如何获得趋势的某个曲线,属性里的index不知道怎么用,例如趋势上有好多根曲线,A、B、C。。。
 如果我要把A曲线删掉,而不是隐藏掉,应该怎么做,怎么获取A曲线的唯一属性。
 帮助中的deletedata也不明白是啥意思。

 下面的脚本中,我用了两个LISTBOX控件
 第一个控件放满所有的需要显示的变量曲线名
 第二个控件用来装“添加”进来的笔
 趋势中显示第二个控件里的笔

 增加笔的脚本

 Dim lstListBox
 Dim lstListBox1
 Dim trend
 Dim listtext
 Set trend= ScreenItems("控件2")
 trend.NumItems=trend.NumItems+1
 Set lstListBox = ScreenItems("listbox")
 Set lstListBox1 = ScreenItems("listbox1")
 If lstListBox.listindex=0 Then
 lstListBox1.AddItem "1_listbox_Field"
 trend.TagName="AI\NewTag"
 trend.color=RGB(255, 0, 0)
 trend.write
 End If

 减少笔的脚本

 Dim trend
 Dim lstListBox
 Dim lstListBox1
 Set trend= ScreenItems("控件2")
 Set lstListBox = ScreenItems("listbox")
 Set lstListBox1 = ScreenItems("listbox1")
 lstListBox1.RemoveItem lstListBox1.listindex
 MsgBox ActiveDocument.Selection(1).ObjectName
 If lstListBox1.selected(0)=True Then
 trend.index = 0
 If trend.index = 0 Then
 trend.ItemVisible = 0'这样写无法实现功能
 End If
 End If
 但是将趋势控件的NUMITEMS减小也不对
 因为当我添加A、B\、C三条曲线时,我是将NUMITEMS增加,因此INDEX的顺序是0、1、2。删除的时候它就以2、1、0的顺序删除,而不是我想删除哪个就删除哪个。
 请高手给我点思路。非常感谢!
 

问题补充:
我是第二种思路,还烦您多解释一下,不是特别清楚你的意思
 你意思是不是我添加的时候 一次性添加4个 移动到BOX2 删除的时候再清空BOX2 同时添加3个?

最佳答案

1、如果你的多条曲线同时只显示一条,根本就不必去关心添加删除问题,趋势控件只需要预先设置一条曲线,通过脚本控制其TagName就可以达到目的。

  2、如果添加ABC三条曲线,且三条曲线都要显示,而且还要实现动态删除,这样稍微麻烦一点,思路如下:
  2.1   删除曲线只用来更新ListBox1的内容
  2.2  曲线的内容根据ListBox1的内容来更新,需要编写一个遍历程序
      trend.NumItems= lstListBox1.ListCount  '#重新设置曲线的数量
      For i=0 To (lstListBox1.ListCount-1)
   trend.Index=i
   trend.TagName = lstListBox1.List(i)  '#将Listbox的内容添加为曲线名称
          Next
 --------------------------------------------------------
 比方原有A、B、C三条曲线,,现在要删除B:
 你原来的思路是想办法获取B曲线,然后删除它。
 我的思路是直接重新设置趋势控件的内容,NumItems=2,第一条为A,第二条为C,也就相当于把B删除了。
 不知道我表达清楚了没有,呵呵。

提问者对于答案的评价:
非常感谢大师的解答,您对我的恩情,我永远不会忘啊!
 我把正确答案附下:
 增加笔:
 Dim lstListBox,lstListBox1
 Dim trend
 Set trend= ScreenItems("控件2")
 Set lstListBox = ScreenItems("listbox")
 Set lstListBox1 = ScreenItems("listbox1")

 If lstListBox.text<>"" Then
  lstListBox1.AddItem lstListBox.Text
  lstListBox.RemoveItem lstListBox.ListIndex
 End If 

 Dim  i,TrendColor(3)
 TrendColor(0) = vbRed
 TrendColor(1) = vbBlue
 TrendColor(2) = vbYellow
 TrendColor(3) = vbCyan
 trend.NumItems = lstListBox1.ListCount
 For i=0 To (lstListBox1.ListCount-1)
  trend.Index=i
  trend.Color=TrendColor(i)
  trend.TagName = lstListBox1.List(i) 
 Next
 trend.Command="Reload"
 减少笔:
 Dim lstListBox
 Dim lstListBox1
 Dim trend
 Dim listtext
 Set trend= ScreenItems("控件2")
 Set lstListBox = ScreenItems("listbox")
 Set lstListBox1 = ScreenItems("listbox1")
 If lstListBox1.text<>"" Then
  lstListBox.AddItem lstListBox1.Text
  lstListBox1.RemoveItem lstListBox1.ListIndex
 End If

 Dim  i,TrendColor(3)
 TrendColor(0) = vbRed
 TrendColor(1) = vbBlue
 TrendColor(2) = vbYellow
 TrendColor(3) = vbCyan
 trend.NumItems = lstListBox1.ListCount
 For i=0 To (lstListBox1.ListCount-1)
  trend.Index=i
  trend.Color=TrendColor(i)
  trend.TagName = lstListBox1.List(i)
 Next
 trend.Command="Reload"

 

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc271238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午8:12
下一篇 2019年6月11日 上午8:12

相关推荐