搬家第五天-127.Wincc V7.3 MSChart 控件初步使用5-百分比餅圖生成


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某一行時,這一行所在日期各裝置的產量百分比情況就會顯示在餅圖里面,如圖所示。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM