我现在打算只做一张趋势,可以增加笔,减少笔,在上面可以做趋势分析,因此我想知道如何获得趋势的某个曲线,属性里的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