MSchart控件除了生成曲線和方圖,還可以生成餅圖。假設有一個車間,里面有5套同樣的生產裝置,每天各裝置的產量已經生成了報表,如果我們希望在wincc上能夠查詢到各個裝置的產量所占總產量百分比,就可以用MSChart的餅圖來實現。
畫面上有一個listview控件,名字叫做LV已經讀取了每天各裝置的產量,如圖所示(ListView如何讀取數據庫不在這里描述)。
在畫面上放置一個MSChart控件,名字叫做Chart,在控件的itemclick事件中添加以下vbs代碼:
Sub ItemClick(ByVal Item, ByRef ObjectItem)
Dim LV,Chart,txt,RowIndex,CtrlRowIndex
Dim produce(5),RowCount,i,SumProduce
Set LV=ScreenItems("LV")
ctrlRowIndex=LV.SelectedItem.Index
Set Chart=ScreenItems("Chart")
'RowCount=LV.listitems.count
RowCount=5
SumProduce=0
For i=1 To 5
produce(i)=CInt(LV.listItems.item(ctrlRowIndex).listsubitems.item(i+1).text)
SumProduce=SumProduce+produce(i)
Next
'圖標初始化
'.Axis坐標軸有兩個參數,第一個axisId指坐標軸編號;第二個參數為保留參數,此處為1,可以不寫
'坐標軸編號0,1,2,3,4
'0為x軸,1為y軸,2位第二y軸,3為z軸,4表示無坐標軸
With Chart
.TitleText = "產量"
.Column = 1
.ColumnCount=6 '5個子成員
.RandomFill=False '不使用隨機數
' '設置圖線的外觀
.chartType = 14 '2d餅圖
.ShowLegend = 1 '顯示圖例
.AllowSeriesSelection=False '不允許選取整個系列
.row=1
For i = 1 To 5
.column=i
.data=produce(i)
.columnLabel=produce(i)
Next
With .DataGrid
.RowLabelCount = 1
.ColumnCount = 5
.RowCount = 1
For i = 1 To .ColumnCount
.ColumnLabel(i, 1) = "產量 " & i & ":" & CStr(produce(i)) & "所占百分比:" & CStr(Formatnumber((100*produce(i)/SumProduce),2)) & "%"
Next
.RowLabel(1, 1) = "各產量所占百分比%"
End With
For i = 1 To .Plot.SeriesCollection.Count
With .Plot.SeriesCollection(i).DataPoints(-1)
.DataPointLabel.LocationType = 1
.DataPointLabel.VtFont.Size = 20
.Marker.Visible = True
.Marker.Style = 1
End With
Next
End With
End Sub
保存后運行,當鼠標點擊ListView某一行時,這一行所在日期各裝置的產量百分比情況就會顯示在餅圖里面,如圖所示。