一、准备工作
在Wincc中新建一个32位浮点数类型内部变量Sort,用于标记是升序还是降序排列。
插入一个静态文本,命名为txt
插入一个按钮,文本为改变颜色
二、从数据库中导入数据到MSHFlex控件
具体见(31条消息) WinCC笔记:02.MSHFlex控件 —— (4) 使用复选框选择显示字段_qq_42016887的博客-CSDN博客
三、写脚本进行升降序排列
在MSHFGrid控件事件-对象事件-mouseup中写脚本
当鼠标指针移动到元素上方,并松开鼠标左键时,会发生 mouseup 事件。
Sub MouseUp(Byval Item, Byval Button, Byval Shift, Byval x, Byval y)
Dim MSHFGrid,txt,sort
Set MSHFGrid=ScreenItems("Grid")
Set sort=HMIRuntime.Tags("sort")
Set txt=ScreenItems("txt")
If sort.Read =2 Then
MSHFGrid.Sort=1
sort.Write 1
txt.Text ="当前按照" & MSHFGrid.TextMatrix(0,item.MouseCol) & "字段进行升序排列"
Else
MSHFGrid.Sort=2
sort.Write 2
txt.Text ="当前按照" & MSHFGrid.TextMatrix(0,item.MouseCol) & "字段进行降序排列"
End If
End Sub
flexSortNone | 0 | 不执行排序 |
flexSortGenericAscending | 1 | 一般升序。猜出文本是字符串还是数字 |
flexSortDescending | 2 | 一般降序。 |
flexSortNumericAscending | 3 | 数值升序。将字符串转换为数值 |
flexSortNumericDescending | 4 | 数值降序。 |
flexSortStringNoCaseAsending | 5 | 字符串升序。不区分大小写 |
flexSortNoCaseDescending | 6 | 字符串降序。不区分大小写 |
flexSortStringAscending | 7 | 字符串升序。区分大小写 |
flexSortStringDescending | 8 | 字符串降序。区分大小写 |
flexSortCustom | 9 | 自定义。用 Compare 事件来对行进行比较 |
四、写脚本改变颜色
对“改变颜色”按钮的单击事件编辑脚本
Sub OnClick(Byval Item)
Dim Grid,rowcount,colcount,i,j
Set Grid=ScreenItems("Grid")
'以下代码添加背景颜色
rowcount=Grid.Rows
colcount=Grid.cols
For i=1 To rowcount-1
Grid.Row=i
For j=1 To colcount-1
Grid.Col=j
If i Mod 3=0 Then
Grid.CellBackColor =2147483661 '蓝色
Else
Grid.CellBackColor =2147483653 '白色
End If
Next
Next
End Sub
效果如下