搬家第五天-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