Iocomp Components Release Notes
|| .Net WinForms V4 SP2
||1 March 2011
This document is organized into the following sections...
The .Net WinForm V4 SP2 Release is now available for download.
or component related questions or bug reports, please submit a copy
to firstname.lastname@example.org or visit our website
NET WinForms [Version 4.0 SP2 Release]
- Added support for VS2010.
- Added 3.0 Framework support.
- Added 3.5 Framework support.
- Added 4.0 Framework support.
- Fixed Axis Title clipping and wrapping issues bugs. In the first case,
text would clip to the span bounds instead of the view bounds. In the second
case, title-text would be clipped when the size of the plot control was
reduced below the point where the title would not fit unless words were
wrapped to another line.
- Changed plot control layout code to not raise an exception when all
data-views are made invisible.
NET WinForms [Version 4.0 SP1 Release]
- Added MasterUISlave property to the Plot Axis objects.
- Modified property editor value Edit boxes to squash all exceptions due
to invalid inputs. After the exception is squashed, the Edit box will return
to the previous valid value. This was done due to eliminate developer
confusion over how to handle application exceptions. Most developers where
not handling the exception. This resulted in an unhandled exception dialog
being displayed to the end-user, and many end-users would click the wrong
button, causing the application to terminate.
- Added new XValueTextDateTimeFormat property to the Plot control.
This property allows you to specify if x-value is formatted in Double or
DateTime format when saving or copying data to the clipboard. When setting this
property to DateTime, the x-axis text formatting style property must also be
set to DateTime or DateTimeUTC.
- Added new GetXText method to all plot channels. This method is in
support of the XValueTextDateTimeFormat property mentioned previously.
- Upgraded Plot Differential channel drawing routines to support null
- Added horizontal scrolling to all Iocomp property editor listbox
controls. The horizontal scrollbar only appears when the width of an item
exceeds the width of the display area.
- Added logic to the design-time property editor to auto-increment the
OPCGroup object's Name property when a new one is added.
- Changed the default value for the OPCItem's Name property to be
"Item???". This is to help remind the developer to set the value.
- Upgraded the MatrixButton control to support buttons with a momentary
style. The MatrixButtonStyle enumeration has a new value called
MomentaryButton. Use the Style property on the MatrixButton class to specify
its type. The MatrixButton class also has a new property called Value, which
is of type ValueBoolean. When the button's Style is set to MomentaryButton,
and the mouse left button is depressed over the MatrixButton, the
MatrixButton Value property will changed to True. When the mouse is
released, the Value property will return to False. When connecting an
OPC-Link to the MatrixButton, be sure to specify the Value.AsBoolean
sub-property (Example, the OPC-Link PropertyName setting would be "Buttons(1).Value.AsBoolean".
The "Buttons(1)" portion specifies the second button in the Button
collection (Zero Based Index), and use "Value.AsBoolean" as the
property on the button class).
- Added Cubic-Spline, Polynomial, and Rational channel types to the Plot
- Fixed AutoSize property default and streaming issue in VS2005 and above.
Due to conflict with new virtual AutoSize property added by Microsoft.
Started with the VS2005/2.0 framework.
- Fixed the Plot control's Channel type data-cursor interpolation issue
when working with the Differential channel type. The data-cursor would
perform linear interpolation between data-points. It now shows the
horizontal differential value.
- Fixed MatrixButtons and MatrixLeds design-time property editor item
scrambling issue. Would result in the settings between elements to be
shifted or dropped.
- Fixed Plot control Text Annotation offset drawing occur. Would only
occur when the Rotation property was set to a non-zero value.
- Fixed OPC design-time property editor scrollbar issue. When the
Control-Name or Property listbox needed to show a scrollbar, the bottom
portion would by partially clipped.
- Fixed Plot Toolbar control Enabled property issue. If the Command
property where set to None, the button would initialize Enabled property to
False, regardless of its setting at design-time. Before this fix, the only
workaround was to set the Enabled property of the button to True through
code at run-time.
- Updated design-time transparency update issue on the Knob, GaugeAngular,
GaugeLinear, SlidingScale, SlidingCompass, and Led controls. At run-time,
the controls would correctly draw themselves and show their background
- Fixed Iocomp property-editor cut/copy/paste/undo problem. Would result
in the listed keyboard commands being ignored. Only occurred on edit box
controls which were configured to edit integer and double data types. For
string data types, the cut/copy/paste/undo feature would work correctly.
- Fixed axes Color property streaming bug. This property would never
stream. (Note: All defaulted Iocomp properties will not stream, and this is
the normal behavior. All property saving is differential, and this is for
- Fixed OPC-Data control link updating bug. This bug would only occur when
the link was made to a control which was a child of a container control. All
controls directly added to a form (The form was the container control) were
- Fixed OPC design-time property editor bug which effected the DataType
property combo-box edit control. When selecting items further down in the
list, the returned value would not match the actual item index and setting
would shift one or more values. This bug did not effect settings to the
DataType property made through code.
- Fixed drawing error on the PlotChannelBiFill class. Would result in
sloped lines being drawn above or below of the bi-fill Reference setting.
For example, if red was to be drawn above the reference, and blue below the
reference, the red would bleed over the reference line, and a portion would
appear as a sloped fill in the blue area.
- Fixed OPC-Data control property editor bug. Occurred when trying to set
the OPCItem.DataType property. Starting with the VT_DECIMAL
enumeration setting, the pull-down combo-box values would start to diverge
after making a change to VT_DECIMAL, or further down in the list.
NET WinForms [Version 4.0 SP0 Release]
- VS2008 integration support added.
- New OPC Pack product added.
- Improved Plot control drawing performance.
- Expanded help file theory for all controls.
- New license purchases now include 2-Years of support and maintenance.
- Fixed plot control layout bug which would result in layout objects being
drawn in the wrong locations. Would only occur when multiple objects were
docked to the same side of a data-view, and one or more of them where hidden
by setting its' Visible property to False.
NET WinForms [Version 3.0 SP4 Release]
- Added ValueDataBind to all controls with a Value or similar functioning
property. The ValueDataBind allows you to use the .NET Data-Binding feature
to link to the main property on the control. For example, the ValueDataBind
links to the first pointer on the GaugeAngular, GaugeLinear, and so on. For
controls like the Pipe and Motor, the ValueDataBind controls the
Animation.On property which turns the control display animation on or
off. The ValueDataBind is necessary because of limitations in the .NET
framework which does not support linking to complex objects or sub-object
- Upgraded the Plot control layout code to support negative margins.
- Upgraded the EditDouble control to support editing of Date-Time values.
- Upgraded the Plot control Labels and Axis Title to support TextLayout
Trimming, NoClip, NoWrap, and etc options.
- Added ClipToMinMax property to the Plot Axis object. When set to True,
all Text on the ticks will be clipped at the Min and Max edge of the scale
- OPC-Data control completed! Now supports browsing for Controls,
Properties, Computers, OPC-Servers, and OPC-Items. Nested control property
connection is now supported (Controls within panels and other parent type
controls). When connecting to any Value property on an Iocomp control, all
end-user generated changes are automatically sent to the OPC-Server (Example
: If connecting to the Value property on the Knob control, the end-user
rotates the knob, the change is sent to the OPC-Server). The OPC-Data
control will also send changes to the OPC-Server when connecting to the
Checked property on the CheckBox control, Text property on the TextBox
control, and the Text and SelectedIndex property on the ComboBox control.
For all other output type controls, you will need to connect to the
XXXChanged event and write the value to the OPC-Item Data property through
- Added new Multi-Column legend type to the plot control. The new type
allows you to add an unlimited number of columns. Each column has a DataType
property which allows you to specify the type of channel value or statistic
to be displayed. The DataType property can be set to Marker, ChannelTitle,
DataPointCount, XFirst, XLast, XMin, XMax, XMean, XStandardDeviation,
YFirst, YLast, YMin, YMax, YMean, or YStandardDeviation.
- Added the LineThickness property to all Scale objects (Angular and
Linear). This property allows you to control the thickness of the line drawn
from the min of the scale to the max of the scale. Has an effect on both the
inner and outer lines.
- Upgraded the PlotChannelBar data-point class type to support custom Fill
styles per data-point. There is a new Fill property of type PlotFill on the
PlotDataPointBar class type. Use the indexer property on the channel to
access a specific data-point by index and assign its Fill property with the
custom PlotFill object to define its appearance. Note: The
DrawCustomDataPointAttributes property on the Bar channel must be set to
true for custom fill attributes to be applied.
- Added logic to hide the last label on the GaugeAngular with the
AngleSpan is set to 360 degrees to prevent overlapping labels.
- Added code to the Toolbar Print routine to detect if the printer becomes
invalid or disconnected after the printing process starts and to display a
"Print Error" dialog instead of an exception.
- Added the FixedMinMaxMajors property to the scale Auto type generator.
When enabled, the scale will show a fixed min and max label on the ends of
the scale. The 1-2-5 rule label generator will still generate labels between
the min and max labels, and they will move when the axes is scrolled.
- Added Wrapping options to the Plot control's LegendBasic object. The
Wrapping has an Enabled and Margin property. The Enabled is set to True by
default, and when the number of elements will not fit, additional columns
will be added and spaced using the Margin property.
- Upgraded the Plot LegendBasic to display the Line, Maker, and Fill style
next to the channel's title. The legend will no longer display a generic
color block next to the channel title.
- Added the MasterUI property to the PlotAxis object. When this property
is set to True, all other axes of the same type (X or Y), will track when
zoomed or scrolled when the user generates User Input (UI) using the mouse
- Added the ColorSectionDrawStyle property to the GaugeAngular control.
The property can be set to Draw3D or DrawFlat. This property is defaulted to
DrawFlat on the Compact Framework version to help speed-up the initial
drawing of the control.
- Added BeforeLayout and AfterLayout events to the Plot control's
- Added the DrawCustomDataPointAttributes property to the plot control's
Bar channel type. This property is set to False by default to speed up the
drawing of the channel data and to maintain high-speed performance when
adding data at a high data-rate. Only by setting this property to True will
the channel draw custom attributes applied to individual data-points. With
this new property being default to False, custom data-point attributes will
not be shown until this property is set to True.
- Added a Fill property to the PlotDataPointBar class. The
PlotDataPointBar class is used by the plot control's Bar channel and an
instance is created each time a new data-point is added. This is an ambient
property and will initially point to the Fill property of the channel. This
property allows you to customize the appearance of individual bars by
assigning a specific PlotFill object to the data-point. Create a PlotFill
object for each type of unique looking bar you need and if multiple bars are
to look the same, have them point to the same instance. Note: The
DrawCustomDataPointAttributes property on the channel must be set to True
for the unique Fill assignments to be drawn.
- Add GetMouseCursor event to all plot sub-objects. Use this event to
change the displayed cursor on a specific plot sub-object.
- Added PortColorLeft, PortColorRight, and PortColorBottom properties to
the Valve's Port class to allow for custom color settings on each body
section. These properties only have an effect if the ColorFollowHead
property is set to False.
- Added cached drawing to the GaugeAngular and Knob control to
dramatically speed up the drawing on the control on subsequent redraws.
- ColorArray property Added to the Motor control Fan class. This property
can be used to modify the colors of the fan blades through code at runtime.
- Added OPCData control.
- Fixed property editor bug in NumericUpDown controls. An exception would
be thrown when inputting negative numbers.
- Fixed drawing issue on the Plot controls Bi-Fill Channel type. When the
Pen was enable on the High or Low Fill option, a line could be drawn from
the last data-point back to the first data-point causing an artifact or
display an annoying center line depending on the first and last data-point
- Fixed issue with the plot sub-object Double-Click event arguments being
in screen-coordinates instead of client-coordinates.
- Fixed issue with the MatrixButtons and MatrixLeds controls which would
result in the property settings of the elements being shifted or scrambled
among the other elements when changing the number of columns and or rows at
- Fixed the issue with the SavePropertiesToFile method on the Plot control
not saving the Chanel's Title property.
- Fixed error in the drawing routine that would result in the channel data
not being drawn when the data was added in reverse order.
- Fixed property editor number conversion issue. Would occur when culture
settings for the operating system where set to use a "," character for the
- Fixed manual size fix up problem on the GaugeAngular control. Normally,
the InnerRadius property of the control is automatically adjusted as the
control is sized. The bug prevented the adjustment of the InnerRadius during
- Fixed dirty flag problem which occurred when using the Iocomp property
editors within the Microsoft property window. Any changes in the Iocomp
property editor would result in the form dirty flag not being set and would
result in the loss of all changes. Using the "Editor (Custom)" right-click
option on the control did not have the problem.
- Fixed PlotLabelBasic multi-line text depth calculation bug. Would occur
in clipping of the text when multiple lines where used.
[Version 3.0 SP3 Release]
- Added UTC (Formally known as GMT) support to the plot axes and channels.
The Axes->TextFormatting->Style property has a new enumeration called
DateTimeUTC. Even though both axes (X-Axis and Y-Axis) can be configured to
use this new style, it would only make sense on the X-Axis. When the style
is set to DateTimeUTC, the X-Values are assumed to be UTC date-time format,
and will be converted to local time when generating the scale tick label text. When
adding data to the channel with this option enabled, make sure the x-value
are in UTC format. All channels of type PlotChannelConsecutive have a new
method called AddYUTC. When calling AddYUTC, pass the Y-Value only, the
x-value is generated for you by reading the DateTime class UtcNow property.
You can still continue to use the AddXY method, just make sure to pass the
X-Value in UTC format and an easy way to get the current time in UTC format
is to use the DateTime.UtcNow property.
- Added the DockStackingEndsMargin property to the plot axes class. Used
to specify the margin in characters between the axis and another stacked
object in the same DockOrder. For example, if you have 2 stacked y-axes, you
want a half character spacing between the top and bottom axes, set the
DockStackingEndsMargin on one of the axes to 0.5 and set the other to 0.0.
You can also set the DockStackingEndsMargin on both axes to 0.25, which is
the default value, and it will result in a total of 0.5 characters between
the two axes.
- Added the DockForceStacking property to the plot axes class. This
property is useful if you have 3 or more stacked axes and you want them to
have the same height/length. Typically, this property is used when you have
multiple stacked y-axes. When the height of each axis is small, you will
notice that the inside axes will be shorter than the axes on the top and
bottom. The reason
for the different heights is that axes in the middle are pulled in on both
ends to keep the labels from overlapping. For axes on the top and bottom, only one end
of the axis is pulled in, and this is why you have axes with different heights.
If you set the DockForceStacking property to True on all y-axes, all y-axes will
have their ends pulled in on both sides, resulting in all axes having the same
- Added an Off-Switch feature to the Knob control. Set the OffSwitch
Enabled property to True to enable and show the off-switch indicator. The
user can rotate the counter-clockwise into the off position. Use the
ValueChanged event and check the knob OffSwitch On property to determine if
the knob is in the on or off state.
- Added DockStartStyle, DockStopStyle, DockStartAxisName, and
DockStopAxisName properties to the plot axis object to allow aligning one or
both ends of one axes to another axis. By default, the DockStartStyle and
DockStopStyle properties are set to Percent for backward compatibility and
the DockPercentStart and DockPercentStop properties are used for determining
the ends of the axes layout. By setting either style to Axes, you can use
the DockStartAxisName or DockStopAxisName property to specify the end align
of the axes in relation to any other axes.
- Added DockStartStyle, DockStopStyle, DockStartDataViewName, and
DockStopDataViewName properties to the Label, Legend, and Table plot
sub-object to allow aligning one or both ends of the object to a Data-View.
By default, the DockStartStyle and DockStopStyle properties are set to
Percent for backward compatibility and the DockPercentStart and
DockPercentStop properties are used for determining the ends of the axes
layout. You can set either Style property to DataViewInner or DataViewOuter.
DataViewInner will cause the end of the plot object to be aligned to the
inner/grid portion of the data-view. DataViewOuter will cause the end of the
plot object to be aligned to the outer portion of the data-view which
includes everything docked to that side of the data-view that is applicable.
- Added UnitTypeAll, UnitTypeLocation, UnitTypeSize, UnitTypeX, UnitTypeY,
UnitTypeWidth, and UnitTypeHeight properties to all plot annotation classes.
These properties allow you to specify the units used for the X, Y, Width,
and Height properties of an annotation in Value, Percent, or Pixels. You can
specify each parameter individually by using the UnitTypeX, UnitTypeY,
UnitTypeWidth, and UnitTypeHeight properties, use the UnitTypeLocation and
UnitTypeSize properties to control by group, or you can change them all by
using the UnitTypeAll property. By default, all are set to Auto which
results in the units being in Value (Value means the units reference the
axes). A typical use would be where you would want the location to be in
Value units and the size of the annotation to be in Percent or Pixel units
which would result in the size of the annotation being fixed regardless of
how much the user zooms the data. Percent is used to specify the
size/location of the annotation in percent of the axes. Pixel is used to
specify the size/location of the annotation in screen pixels. For Line and
Polygon annotations, only use the UnitTypeAll setting only. There are
read-only properties that can be accessed through code or viewed in the
property editor to determine the actual units for each parameter and their
names are : ActualUnitTypeAll, ActualUnitTypeLocation, ActualUnitTypeSize,
ActualUnitTypeX, ActualUnitTypeY, ActualUnitTypeWidth, and
- Added hundred's of attributes for the VS2005 CF Version to support the
design-time experience. All class attributes have been added to allow all
control and sub-class properties to be streamed properly (This does not
include the default attributes). Also includes attributes to hide run-time
properties that should be hidden at design-time.
- Added a SetSpan method with
Hours, Minutes, Seconds, and Millisecond parameters to the ScaleRange and
PlotAxis objects. Allows for ease in setting the Span in date-time units.
Before, you would either need to use the built-in data-time calculator in
the property editor or calculate these values in the Microsoft's DateTime
format through code.
Added Compact Framework Beta for
VS2003 and VS2005 to the installer. Sign-up for the CF Beta Newsgroup to get
additional details, notes, and examples. Note : This beta version expires
after 31 October 2006 and you will need to get additional updates with later
expiration dates if you plan to continue using it after this expiration
The PlotAxis Zoom(Rectangle r)
and Zoom(double factor) methods have been changed to public/virtual for
overriding in your own descendents.
DisableAllTracking method has been changed to protected/virtual for
overriding in your own descendents.
Add the SaveDialogSetup event to
the PlotToolBarAdapter class. The event passes a pointer to the
SaveFileDialog instance in the event arguments. This event is called just
after being initialized with the Iocomp defaults and just before the dialog
is shown to the user. Use this event to customize the look of the save file
dialog before it is presented to the user.
Added save-data and load-data
buttons to the plot control property editor "File I/O" tab. They allow you
to save or load data for all channels at runtime.
Upgraded the .Net installer to
integrate the help into Borland's BDS2005 and BDS2006 development
Added SpanMinimum, MaxMargin, and
MinMargin properties to the axes Tracking features. Use SpanMinimum to limit
the minimum value for the Span. Use the MaxMargin and MinMargin properties
to provide a margin above or below the data. These properties are also used
when performing a ZoomToFit operation.
Added the AddNullDataSet method to the Plot
control main interface. Used for adding a single set of null data-points to
property to the Axis object. Allows for disabling of the Ctrl-Key toggle for
switching between the scroll and zoom modes.
Added CanFocus property to all
plot sub-objects. Can be used to prevent a plot sub-object from taking the
keyboard focus. If the Enabled property is still set to True, the plot
sub-object will still respond to mouse events.
IgnoreDuplicateDecimalCharacter property to the EditDouble Control. When set
to True, all duplicate decimal separator character key presses are ignored
after the first decimal separator character is entered.
The PlotMarker Draw method has
now been made protected and virtual for overriding in your own descendents
for draw customization.
Upgrade channel statistics to
support empties and nulls.
Added ShareDataCollection method,
UnShareDataCollection method, and DataCollection property to all channels.
By calling the ShareDataCollection method on a specific channel, you can
have it use the DataCollection of another channel to help reduce the memory
footprint of your application. Typically, this would be used when you have
multiple plots that are on different tabs, forms, or etc which need to
display the exact same data. When adding data to the channel that is being
shared, the tracking for the channel will be called if enabled and the plot
control will automatically be repainted. This is not the case for the
channel(s) sharing the DataCollection, you may need to update the axis
tracking if needed and call the invalidate method if the channel(s) are
assigned to different plot controls.
Modified the TextFormatting
property on the ScaleDisplay class to allow substitution of custom
TextFormating classes. The TextFormatting property is of type
TextFormatDoubleAll. The TextFormatDoubleAll class was previous marked as
sealed and this restriction has been removed so you can create your own
descendents. In your new TextFormatDoubleAll class descendents, override the
GetText method to provide your own custom tick text formatting.
Upgraded the channel mouse hit
testing code to use custom marker attribute size on channels that support
Added WidthStyle property to the
PlotChannelBar. Allows you to specify if the Width property is in Value,
Percent, or Pixel units.
Upgraded the LCDMatrix control text-lines editor to use a mono-spaced
font for easier alignment of text.
Added Fill option to the plot
Trace channel type.
Added support for split Linear &
Log10 scales to all controls that support scales. This feature would
typically be used on the Plot
control Y-Axis. To use this feature, set the Axis ScaleRange.ScaleType
property to SplitLinearLog10. Use the SplitStart property to
indicate at what value the scale is split between Linear and Log10. Use the
SplitPercent property to control what portion of the scale
is used for the Linear portion. When this feature is enabled, the user is
prevented from scrolling or zooming of the axis. Currently,
the plot data-cursors does not support reading data-points values that are
on a SplitLinearLog10 Y-Axis.
Major upgrade to the plot layout
code to allow for stacking data-views in any combination. For example,
allows you to have a 3x3
grid of data-views. You were previously limited to 1 data-view on the left
and right and an unlimited number in the center. You can now
have an unlimited number of the left, right, and vertically. Warning!!! This
upgrade to the layout code may affect your existing layout
if you had multiple data-views. You may need to reposition your layout
objects using the visual layout manager. If you are performing
layout through code, use the new StackingGroupIndex property on the
Data-View object to indicate its order from left-to-right across
the screen (Lower numbers to the left and higher numbers to the right).
The plot layout code now supports
hiding of the axes using the Visible property and still using the axes as a
reference for plotting
channel data. Previously, if the axes was hidden, the actual coordinates of
the axes was not calculated and could not be used as a
reference for drawing channel data.
The plot Trace & TraceXY channel
types has a new property called DrawCustomDataPointAttributes. This property
is set to False by
default to speed up the drawing of the channel data and to maintain
high-speed performance when adding data at a high data-rate. Only
by setting this property to True will the channel draw custom attributes
applied to individual data-points. In the previous beta
update, any custom data-point attributes where drawn. With this new property
being default to False, custom data-point attributes will
not be shown until this property is set to True.
Added overloads of the
ScaleDisplay AddTickMajor and AddTickMid methods that allow you to specify
the text displayed by the tick
when adding custom ticks. The previous non-overloaded methods only allowed
you to specify the positioning Value property and the Text
property would automatically be set for you using the current TextFormatting
settings. You did have the option of using the returned
tick pointer and setting the Text property afterwards, but these new
overloads allow you to accomplish the same thing with one line of
Many new internal upgrades to
improve the performance of the plot control when adding large number of
data-points and also
displaying them in the data-view.
Data-Point moving capability to the BiFill, Differential, Digital, Fill, and
SweepInterval channels (Previously added to the Trace and TraceXY channels).
Use the new UserCanMoveDataPoints property to enable or disable data-point
moving. The channel must also be enabled, markers shown, and the Toolbar
must be in the select mode (Markers are required to be shown to provide a
hit target for the user to click).
DataPointClick, and DataPointDoubleClick events to all channels that support
data-point moving (Note: UserCanMoveDataPoints does not need to be set to
True for the DataPointClick and DataPointDoubleClick events to fire. But the
channel must also be enabled, markers shown, and the Toolbar must be in the
Added DataPointMoveStyle to all
channels that support data-point moving. Allows you to specify if the
end-user can drag the data-point in the X, Y, or both dimensions.
Added the CursorSelectMode,
CursorZoomBoxMode, and CursorDataCursorMode properties to allow
customization of the mouse cursor shown on the data-view when in the
Added ImageListCommon property to
the main interface of the plot control. This image-list can be used for
loading images that can be displayed in the plot Labels and Tables. The
Label and TableCell object now have a ImageList, ImageIndex and
ImageTransparent property. If the ImageList property is not set explicitly,
then the ImageIndex will specify the index of the image to use from the
image-list pointed to by the ImageListCommon property on the main interface
of the plot control. You can change the ImageList property to point to an
image-list other than the one pointed to by the ImageListCommon property.
Added UserCanMove option to all
plot Limit objects. The limit must be enabled and the Toolbar must be in the
select mode for the user to be able to move the limit.
Added multiple page printing
support to the plot control with the addition of the PrintPage event on the
PlotPrintAdapter. Attach to the event whenever you want to support printing
multiple pages. The event arguments has a PrintDocument, PageNumber, and
HasMorePages property. Use PageNumber to determine which page is going to be
rendered next. Set HasMorePages to True if you wish to print additional
pages. Use the PrintDocument property to make and changes to the printer
settings before the page is printed. Each time this event is fired, you can
make any changes to the plot control to customize the look of the page and
also set the Min and Span of the X-Axis to control which portion of the plot
data is printed on this page. If you wish to make settings changes that will
effect all pages, use the PrintBefore event on the PlotPrintAdapter. Use the
PrintAfter event on the PlotPrintAdapter to restore the plot back to the
previous configuration for screen display. For example, if the screen
display has a black background color and white foreground color and you wish
to invert these colors when printing, set the BackColor to Color.White and
the ForeColor to Color.White in the PrintBefore event handler. Then set
these colors back to their original value in the PrintAfter event handler to
restore the plot control for screen display.
MouseLeft, MouseRight, MouseMove, MouseUp, Click, DoubleClick, MouseWheel,
KeyDown, KeyUp, KeyPress, LostFocus, GotFocus to SubClassBase which is the
ancestor of all Iocomp sub-class objects. Even though these events are
present on all Iocomp sub-objects, not all descendents implement them. In
general, all plot sub-objects and classes like MatrixButton, MatrixLed, and
Gauge-Pointers, and etc implement these events because they allow user input
MatrixButton (Includes Phone-Pad Buttons), MatrixLed collection editors to
provide a more detailed description when making a selecting in list box. The
description now includes the item type, Row & Col, and Text settings.
UserCanMoveDataPoints property to the Trace and TraceXY channel types. When
this property is set to True, the channel is Enabled, and the Toolbar is in
Select mode, the end-user can move data-points. For the Trace channel type,
an individual data-point can not be moved before a preceding data-point or
past a succeeding data-point. The TraceXY channel type does not have any
restrictions on moving a data-point past another data-point. In the next
couple of beta updates, more channel types with have this feature added.
BlinkerEnabled and BlinkerRate properties to the Led and LedArrow controls.
When BlinkerEnabled is set to True, the LED's Value property will toggle at
the BlinkerRate property value and flash the LED.
property to the SevenSegmentClock control. When set to True, the control
will updates its' display twice a second to the system clock value.
features to all controls. All controls now have a BeginUpdate and EndUpdate
methods for manual control of painting. Also added UpdateFrameRate property
to allow for automatic control of the Frame-Rate at which controls are
repainted. Normally, as control attributes are changed or data is added, a
repaint request is made. If you make several thousand changes per second,
the control will attempt to repaint several thousand times a second. With
the UpdateFrameRate property, you can specify the maximum number of times
the control is repainted per second. The default and maximum value of the
UpdateFrameRate property is set to 50 which is the maximum rate the human
eye/brain can detect. The UpdateFrameRate property is of type double so you
can specify frame rates less than 1. When UpdateFrameRate is set to 0.2, a
new frame will be painted every 5 seconds (1/0.2).
PlotChannelTrace and PlotChannelTraceXY to support individual control of
trace and marker attributes. Each data-point now has a Trace and Marker
property. To change the attributes of a data-point trace-line, create a new
PlotPen object and assign it to the Trace property of the data-point. You
can then modify the data-point Trace sub-properties to change the attributes
of specific trace-line. To change the attributes of a data-point marker,
create a new PlotMarker object and assign it to the Marker property of the
data-point. You can then modify the data-point Marker sub-properties to
change the attributes of the specific marker. If you do not create a new
object for the data-point Trace or Marker property and you modify their
sub-properties, you will be modifying the attributes for all data-points
that do not have individual Trace or Marker objects.
Added updates to
code base to support compact framework support.
Scale Components (Gauge and Plot controls)
property to all ScaleRange classes. Supports Linear or Log10. Default value
1) Added TextBox annotation. Full class name is PlotAnnotationTextBox. Similar
to the Text annotation and adds a box around the text.
2) Added CustomizeHintText event to all plot Data-Cursors. Allows for
customization of the hint text.
3) Added Axes control properties to the Data-View object. Supports the following
Allows independent control of the axes based on the type of input. Can be
set to none, XAxes, YAxes, or Both.
- Cleaned up the numerous C4374 warnings that would appear when compiling
the Iocomp controls in C++ .Net applications.
- Fixed EditDouble keyboard input character bugs. Depending on the
TextFormatting.Style property and the operating system language settings,
the comma, period, and sign characters key presses would unnecessarily be
blocked when filtering character input.
- Fixed Plot Axes Title layout clipping bug which would occur when the
title area was not wide enough and the text would need to be wrapped. The
wrapped lines area would not be considered in the depth calculation and
would result in the text being clipped to a single line.
- Fixed culture and unit issues with the EditDouble control. The culture
issue would prevent using the comma as a decimal separator for some culture
settings. The unit issues dealt with parsing the units text when still
appended to the end of the value after editing.
- Fixed Plot SaveDataToFile and LoadDataFromFile bug which would occur
when multiple channels had an unequal number of data-points. The problem
would not occur if the first channel had the most number of data-points and
the last channel had the least number of data-points, and channels
in-between, had successfully less data-points in order from first to last.
- Fixed Plot Annotation Line type clipping bug. Would result in the line
disappearing if either of the line end-points extended beyond the data-view
- Fix installer VS2005 toolbox integration issue. Would only occur if the
system had the "SQL Server Management Studio Express" installed. The
installer would report an integration exception and would fail to add the
Iocomp controls to the VS2005 toolbox.
- Fixed issue with the MouseRight event not firing on plot sub-objects
when the ContextMenuEnabled property was set to False.
- Fixed plot property editor save properties dialog error. The default
file name was causing an error in the latest version.
- Fixed the problem caused by calling the plot control ShowLayoutEditor
method. After being called, the ShowEditorCustom method on the plot control
would no longer bring up the full editor for the plot control and instead
would only show the layout editor tab.
- If the channel Visible property was set to False and the VisibleInLegend
property was set to True, the user was unable to select the channel in the
- Fixed property editor Multi-Line editor control bug that would result in
changes not being saved.
- Fixed plot layout bug that would result in multiple stacked object using
the width of the first stacked object regardless of the depth of the other
objects in the same stacking order.
- Fixed the newly created bug in Beta 6 that result in the Data-View
Grid-Line-Mirroring option not working.
- Fixed the channel statistics bug which would occur when the ring-buffer
was enabled and would cause incorrect XMean and YMean calculations. The code
was incorrectly using the Count property instead of the running total count.
- When setting the Led control indicator style to Diamond, the led would
not draw the indicator and only the border would appear.
- Fixed lockup issue on the ScaleDisplay when the Generator Style was set
to Fixed and the MajorCount property was set to 1 or less. The MajorCount
property was incorrectly limited to 1 and has now been changed to 2.
- Fixed issue with the Axes scale drawing custom ticks outside of the axis
area and also showing gridlines outside of the data-view
- Fixed plot axis zooming bug that would cause a lockup issue if the user
tried to zoom beyond 1E300 Span value.
- Fixed plot alignment issue when having stacked objects view different
widths. For example, if two axes or an axes and a legend where
stacked with different widths, the object with the smaller depth would be
misaligned. The layout code has been upgraded to handle all
variations of docking and stacking with varying depths.
- Fixed GaugeAngular lockup issue when AutoSize was triggered. Only
occurred when the control had a specific width and height and a property
changed that would require an AutoSize calculation. If the application was
allowed to hang long enough, a Stack-Overflow error would be raised.
- Fixed text drawing issue with MatrixLeds. A bug was introduced in Beta2
that caused text for all LED's to be drawn in a single LED.
- Fixed issue with Plot Data-Cursor MasterControl property. Regardless of
the MasterControl property setting, all data-cursors would act as a master
and move all other data-cursors.
- Fixed MatrixLeds bug that would cause incorrect row and col information
to be reported when checking the properties on the led or when passed in the
LedClick or LedDoubleClick event handlers.
- Fixed ZoomBox bug that would occur when an axes Reverse property was set
[Version 3.0 SP2 Release]
PLOT PACK - CHANNELS
1) Added FastDraw to the PlotChannelSweepInterval channel.
YMaxScale and YMinScale properties to the PlotChannelBase class.
PLOT PACK -
Added the BeforeZoomBox event to the DataView: This allows you to
intercept zoom box events where you can cancel and
perform any operations or implement any features.
PLOT PACK - LIMITS
Added new PlotLimitPolyBand.
PLOT PACK - DATACURSORS
Added the MasterControlEnabled property to all plot data-cursors. This allows the
data-cursors to stay synchronized with each other.
PLOT PACK - MISC
Added the GetInternalMouseEventArgs method to the main interface. This method is
used for converting standard mouse event args to internal
coordinates used in the Plot control. Example: All pixel coordinates (PixelMin,
PixelMax, etc.) are offset due to the Plot control's border and
outer margins. The GetInternalMouseEventArgs removes the offsets.
- Fixed X axis DateTime formatting bug.
- Corrected the CopyTo method on the PlotDataViewCollection class. The
method was requiring an incorrect array of PlotAxis.
.NET WinForms [Version 3.0
SP2 Beta 8]
- Fixed Clipping bug for plot objects that show up in the plot data-view.
Would result in the bottom pixel of objects being clipped and would only be
noticeable when they touched or crossed the bottom of the clipping region.
- Fixed bug that would result in the Axis span being collapsed to zero
when loading the properties and data file with the axis tracking ExpandStyle
set to Minor or Major.
PLOT PACK - ALL CHANNELS
YMinScale and YMaxScale for determining the max position of the data shown
on the scale. Currently useful for the Digital channels where the data does
not match the scale display values.
- Added overloads of the AddNull and AddEmpty that
support specifying the X-Value in DateTime
PLOT PACK - PlotChannelImage
1) Updated to support decreasing of the ImageYSamples while
preserving the last portion of the previous data.
2) Removed Data-Point storage capability to speed up performance.
PLOT PACK - PlotChannelDifferential
1) Added Trace Fast Draw.
.NET WinForms [Version 3.0
SP2 Beta 7]
PLOT PACK - ALL CHANNELS
1) Added RemoveAt and RemoveRange to all PlotChannel classes. Allows
removal of a single data point or a range of data points.
PLOT PACK - PlotChannelImage
1) Added support to the PlotChannelImage for custom streaming. Allows
streaming of channelís custom data..
2) Renamed all properties and methods on PlotChannelImage where the property
name had the word Pixel in it and replaced Pixel with Samples.
PLOT PACK - MISC.
1) Added LoadDataFromStream to the Plot Interface and the PlotChannelBase
interface (all channels)
1) Upgraded the ScaleRange class which is used with all components with scales
(including the plot axes) to now support limits.
Limits allow you to limit the min and max of the scale and also the min and max
of the span.
The limits can be controlled using the following properties:
Each property has a corresponding enabled property to switch the limit on or
off. This property is called:
If these limits are not enabled, there are still internal limits. These internal
limit values can be read by using the following properties:
These properties are read only with the following internal values:
MinLowerLimitActual - 1.0
SpanLowerLimitActual +1.0 E -300 (This
must be positive)
SpanUpperLimitActual +1.0 E +300 (This
must be positive)
These Actual values will reflect the true limits. Example, if the
MinLowerLimitEnabled is set to true, the Actual will be equal to the Value
If the enable is set to false, the Actual will return to the internal values
.NET WinForms [Version 3.0
SP2 Beta 6]
- Problem: Adding data to invisible plots sets the plot's axes span to
zero, so whenever the plot is set to visible, the data and axes don't
appear. - Fixed
PLOT PACK - FASTDRAW Feature - Channels
supporting a Trace
1) Added FastDraw feature to the channels supporting the trace option. This is
The FastDraw feature dramatically speeds up the drawing of all channels
PLOT PACK - MISC.
1) Added the ClippingStyle property to all plot objects showing up in the data
view area. This property has values of DataView and Axes.
When DataView is selected, the objects clipping regions will reference the
DataView. When set to Axes, the clipping region will be set to the axes
referenced by the object.
Objects incorporating the ClippingStyle property:
.NET WinForms [Version 3.0
SP2 Beta 5]
INSTRUMENTATION PROFESSIONAL PACK
1) Added a Style property to the Valve control. The Style property can have a
Port2 or Port3 style for supporting 2 valve configurations.
PLOT PACK - DATA CURSOR
1) Several updates completed to make the data cursor more user friendly.
2) PlotChannelDigital support. The cursor will now display a true or false for
the Y values.
3) The cursor now hides the y pointer line when in the ValueXY or ValueY mode on
the PlotChannelDigital (digital channel)
For all other channels, when measuring the ValueY and the channel type being
measured is not an XYChannel type,
a vertical x line will be shown displaying the Y value. This Y value is
determined by interpolation.
PLOT PACK - MISC.
1) Updated the plot to change the mouse cursor style based on the object it is
over and the mode the object is in
.NET WinForms [Version 3.0
SP2 Beta 4]
- PlotChannelImage would not clear the channel data points.
MISC. - Streaming
1) Added the SavePropertiesToFile method to all controls, collections, and all
classes extending from SubClassBase (which is 99% of our classes)
2) Added the LoadPropertiesFromFile method to all controls, collections, and all
classes extending from SubClassBase (which is 99% of our classes)
3) Added the SavePropertiesToStream method to all controls, collections,
and all classes extending from SubClassBase (which is 99% of our classes)
4) Added the LoadPropertiesFromStream method to all controls, collections,
and all classes extending from SubClassBase (which is 99% of our classes).
.NET WinForms [Version 3.0
SP2 Beta 3]
- Fixed Multi-Line String edit control in property editors. It would
display an error if the string was equal to a null. It now displays an empty
string and allows you to change the value
1) Upgraded Bubble Channel to support non-consecutive data (XY type data). Set
the RequireConsecutiveData to False to enable this option.
1) Added PlotLegendChanneImage to support the PlotChannelImage. Shows a gradient
with label based scale to indicate the values represented by the colors shown in
.NET WinForms [Version 3.0
SP2 Beta 2]
1) Added PlotChannelTraceImage.
The new Channel type is called
PlotChannelTraceImage. It will cache all previously drawn trace lines and
markers as long as the display parameters are not changed.
If the display is
scrolled, zoomed or resized, the cache will be dumped and redrawn. It is
designed to allow the user to scroll or zoom the view if you wish.
performance is very good while working in cache mode. If the cache needs to
be dumped and redrawn due to the user scrolling or zooming, the temporary
the processor is not noticeable.
.NET WinForms [Version 3.0
SP2 Beta 1]
- Fixed : ZoomToFitAll and ZoomToFitInView bug. If the Min and Max where
the same, the Span would be put to zero causing the axis to display nothing.
Change to not do anything if the Span would be zero.
- Fixed : PlotDataCursorXY property editor was missing the edit controls
for the Style property. Updated property editor.
1) Added RingBufferCount property.
Added RingBufferCount property to PlotChannelBase which is the ancestor of all
channels. Allows you to specify the size of the ring buffer in
To disable the ring-buffer feature, set this property to 0. (This property
should not be modified on the Sweep-Interval channel type)
1) Added code to Print-Preview so if no printers are installed, the user is
given the option to install one.
1) Added HitRegionSize property to the PlotLimitLineX, PlotLimitLineY. The
property allows you to adjust the size of the region on both sides of the line.
The region is used for hit testing when the user tries to click on the limit
line with the mouse.
1) Added HitRegionSize property to the all plot data-cursors. The property
allows you to adjust the size of the region on both sides of the pointer lines.
The region is used for hit testing when the user tries to click on the pointer
with the mouse.
1) The Legend has been updated to allow selecting and focusing of channels. The
legend will now draw a focus rectangle around the channel if it has the focus.
If you are using a PlotDataCursorChannel and the DataCursor has focus and you
click the channel in the legend, the DataCursor will switch to the channel being
.NET WinForms [Version 3.0
- .Net Plot Pack Official Release
NET WinForms [Version 3.0
- .Net Instrumentation Standard and Professional Pack Official Release.
For support, please contact us at email@example.com
or visit our web site at http://www.iocomp.com/support
for telephone and other support options.
Copyright ©1998-2011 Iocomp Software Incorporated.
Iocomp and the Iocomp Logo are registered trademarks of Iocomp Software Inc.
Borland is a registered trademark of the Borland Corporation. Windows,
Microsoft, and ActiveX are registered trademarks of the Microsoft Corporation. All other trademarks are registered by their respective owners.