About this task
The Generic ActiveX Wrapper and other modules in the CimEdit .NET feature support hosting and interfacing with any WPF and WinForms controls, As a result, you can use third-party controls or create your own controls based on any .NET Framework WPF or WinForms control types.
Note: If you are using a third party control this procedure can be omitted.
Procedure
Create a folder in the..\<CIMPLICITY Installation>\exe\DotNet Components directory.
Example
..\Proficy\Proficy CIMPLICITY\exe\DotNet Components\My Samples
Do the following.
Use a text editor (e.g. Notepad) to write following code as a C#
source file.
Name the file TrendChart.cs.
Save the file in your My Samples folder.
using System;
using System.Drawing;
using System.Windows.Forms.DataVisualization.Charting;
namespace ChartControls
{
????????public class TrendChart : Chart
????????{
????????????????private double _value;
????????????????private ChartArea _area;
????????????????private Series _series;
????????????????private Title _title;
????????????????public TrendChart()
????????????????{
????????????????????????BackColor = Color.Silver;
????????????????????????BorderSkin.SkinStyle = BorderSkinStyle.FrameThin5;
????????????????????????_title = Titles.Add("Trend Chart");
????????????????????????_title.Font = new Font("Arial", 10, FontStyle.Bold);
????????????????????????_area = ChartAreas.Add("area0");
????????????????????????_area.AxisX.LabelStyle.Format = "hh:mm:ss";
????????????????????????_area.AxisX.LabelStyle.Interval = 5;
????????????????????????_area.AxisX.LabelStyle.IntervalType = DateTimeIntervalType.Seconds;
????????????????????????_area.AxisX.MajorGrid.Interval = 5;
????????????????????????_area.AxisX.MajorGrid.IntervalType = DateTimeIntervalType.Seconds;
????????????????????????_area.BackColor = Color.Orange;
????????????????????????_area.BackGradientStyle = GradientStyle.TopBottom;
????????????????????????_series = Series.Add("series0");
????????????????????????_series.ChartType = SeriesChartType.Line;
????????????????????????_series.ShadowOffset = 1;
????????????????}
????????????????public string Title
????????????????{
????????????????????????get { return _title.Text; }
????????????????????????set { _title.Text = value; }
????????????????}
????????????????public double Value
????????????????{
????????????????????????get { return _value; }
????????????????????????set
????????????????????????{
????????????????????????????????_value = value;
????????????????????????????????DateTime current = DateTime.Now;
????????????????????????????????_series.Points.AddXY(current.ToOADate(), _value);
????????????????????????????????double removeBefore = current.AddSeconds(-25).ToOADate();
????????????????????????????????while (_series.Points[0].XValue < removeBefore)
????????????????????????????????????????_series.Points.RemoveAt(0);
????????????????????????????????_area.AxisX.Minimum = _series.Points[0].XValue;
????????????????????????????????_area.AxisX.Maximum
????????????????????????????????????????= DateTime.FromOADate(_series.Points[0].XValue).AddSeconds(30).ToOADate();
????????????????????????}
????????????????}
????????}
}
Note: The TrendChart class is derived from the Framework 4.0 Chart class.
In the constructor, a ChartArea
and a Series
are added to the chart control,
The control is then configured by setting some ChartArea
and Series
properties.
Two properties are defined:
Title
Sets a chart title
Value
Binds to a data source
When the data value changes, the set action of the Value
property adds a new data point to the chart.
When the number of data points excesses a preset limit, the oldest points are removed.
Open a Command Prompt window.
Change the directory to the path to your new DotNet component folder.
Example
C:\Program Files (x86)\Proficy\Proficy CIMPLICITY\exe\DotNet Components\My Samples
Enter the following command.
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc /t:library /out:ChartControls.dll /r:System.dll;System.Windows.Forms.dll;System.Windows.Forms.DataVisualization.dll TrendChart.cs
Results
A ChartControls.dll is now included in your DotNet components folder.
Note: This TrendChart control can also be built with Visual Studio 11.0. A project for this is included in the folder
..\<CIMPLICITY Install>\exe\DotNet Components\Sample Components\VS2010SampleProjects.
Important: Make sure that the .dll files you use to add ??new components are unblocked.
Right-click the file in Windows Explorer.
The Properties dialog box opens.
Select the General tab.
Click Unblock.