.NET Control: Create new Components
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.
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. -
Use a text editor (e.g. Notepad) to write following code as a
-
In the constructor, a
ChartArea
and aSeries
are added to the chart control, -
The control is then configured by setting some
ChartArea
andSeries
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.
- Right-click the file in Windows Explorer.
The Properties dialog box opens.
- Select the General tab.
- Click Unblock.