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.