我们使用MSHFGrid读取SQL Server数据表之后,有时候希望给表格背景加上颜色,那么可以这样做。
一 准备工作
假设SQL Server有这样一张表格
Wincc页面上有一个MSHFGrid控件,名字是MSHFGrid,有一个按钮,按钮点击VBS脚本如下:
Sub OnClick(ByVal Item)
Dim conn
Dim ssql
Dim ors
Dim ocom
Dim scon
Dim MSHFGrid
Dim ADODC
Dim PCName
Dim i,j,rowcount,colcount
PCName=HMIRuntime.Tags("@LocalMachineName").Read
scon="Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog =MyDB;Data Source = " &PCName & "\WINCC"
ssql="select * from charttable"
Set conn=CreateObject("ADODB.Connection")
conn.ConnectionString=scon
conn.Cursorlocation=3
conn.open
Set ors=CreateObject("ADODB.RecordSet")
Set ocom=CreateObject("ADODB.Command")
ocom.commandtype=1
Set ocom.ActiveConnection=conn
ocom.CommandText=ssql
Set ors=ocom.Execute
Set MSHFGrid=ScreenItems("MSHFGrid")
Set MSHFGrid.DataSource=ors
MSHFGrid.Refresh
MSHFGrid.colwidth(1)=2500
Set ors=Nothing
conn.close
Set conn=Nothing
‘以下代码添加背景颜色
rowcount=MSHFGrid.Rows
colcount=MSHFGrid.cols
‘Msgbox MSHFGrid.BackColor
‘MSHFGrid.AllowBigSelection=True
‘MSHFGrid.b
For i=1 To rowcount-1
MSHFGrid.Row=i
For j=1 To colcount-1
MSHFGrid.Col=j
If i Mod 3=0 Then
MSHFGrid.CellBackColor =2147483661 ‘蓝色
Else
MSHFGrid.CellBackColor =2147483653 ‘白色
End If
Next
Next
End Sub
上述脚本使第3、6、9……行表格背景是蓝色,其他行背景是白色,在写脚本的时候需要注意,一般来说我们写下控件名称按下.后,系统会自动列出可选的属性、方法,但这里CellBackColor 属性并不会出现在属性/方法列表里,这可能会给编程人员一点迷惑,以为WINCC里面的控件是阉割版本,不支持一些属性。我估计这是WINCC的一点bug吧。运行后效果如下: