Iocomp Components Release Notes

ActiveX and VCL/CLX Version 5.0.4 Service Pack 2

Bug Fixes:

Fixed Assert Issue. Would occur when
debugging Visual C++ applications. Required developer to click
ignore on asserts to continue debugging. Plot & StripChart controls
would raise several asserts on application launch and any type of
Iocomp control which could receive keyboard focus would generate an
assert when clicked.

Fixed
OPC string issues. Would accessing the property-editor, most characters
would display as Chinese, Korean, or Japanese Unicode characters.

Fixed
Channel clipping issue. Would occur if the Channel->ClipToAxes
option was enabled and the missing pixel touched the bottom edge of the
data-view. Would not affect any other pixels in the data-view.

Fixed
GetYInterpolated function return value issue. The return value is
a boolean indicating if the returned value is valid or not. For
interpolated values, the boolean return value was always correct. For
the case where no interpolation was necessary because the
target x-value match the x-value of an actual data-point and the
data-point y-value was null, the returned value was incorrectly
reported as valid. Because the plot control data-cursor utilizes
the GetYInterpolated function, these fix also corrects the same issue with the data-cursor.

New Features:

Upgraded controls to support Embarcadero XE2 (Delphi + C++ Builder).

Upgraded controls to support Embarcadero XE3 (Delphi + C++ Builder).

Upgraded controls to support Embarcadero XE4 (Delphi + C++ Builder).

Upgraded controls to support Embarcadero XE5 (Delphi + C++ Builder).

Upgraded design-time licensing manager to support development on 64-Bit operating systems.

ActiveX and VCL/CLX Version 4.0.6 Service Pack 3

Bug Fixes:

Fixed iKeyBoard control
SavePropertiesToFile issue. The control was not saving out the settings for
individual buttons.

Fixed various Unicode issues with
using the Plot Control's SavePropertiesToFile and LoadPropertiesFromFile
methods.

New Features:

Added Transparent Support to iRotationDisplay rotated images.

Upgraded plot control channel running statistics to support nulls and
empties.

Upgraded All Iocomp Products to support C++ Builder XE.

Upgraded All Iocomp Products to support Delphi XE.

Upgraded All Iocomp Products to support RAD Studio XE.

ActiveX and VCL/CLX Version 4.0.4 Service Pack 2

Bug Fixes:

Fixed LoadPropertiesFromFile bug
which would misinterpret carriage-return/line-feed characters. The result would
be multi-line text being corrupted into single-line text strings.

Fixed iSwitchSlider Unicode display
bug.

Fixed iSwitchRotary Unicode display
bug.

Fixed data-cursor y-value issue when
the channel was in Differential mode and the Snap-To-Data-Point option was
enabled. The data-cursor would display the value for the previous data-point.

Fixed double key-press bug. Affected
control's which support increasing or decreasing their value through key
presses. For example, pressing the up-arrow key on the SwitchSlider or
SwitchRotary would cause the value to increase by 2 steps. (Note: This bug would
not occur on Vista or Windows 7).

Added ClipToAxes property to the
Plot/XYPlot control ActiveX iPlotLimitX interface. This property has always
existed, was always accessible through the property editor, but was missing on
the ActiveX version iPlotLimitX COM interface (Was not an issue with the VCL
version).

New Features:

Added support for Delphi 2010.

Added support for C++ Builder 2010.

Added Support for RAD Studio 2010.

Upgraded all ActiveX controls to support Unicode.

Upgraded all property editors to display Unicode strings.

ActiveX and VCL Version 4.0.2 Service Pack 1

Bug Fixes:

Fixed bug on the Plot control
DataCursor which would occur when multiple x-axis where stacked end-to-end and
the x-axis was in data-time mode. There would be a small error when the
data-cursor calculated the x-value to display in the hint box.

Fixed AutoFrameRate issue which would
result in the last frame not always being painted. Previously, when data
collection was suspended, it was necessary to call the invalidate method to
ensure the last frame was always painted. With this fix, you no longer need to
call the Invalidate method.

New Features:

Added PointerFillEnabled and PointerFillColor properties to the
iSwitchSlider control.

Added the OnTimeBaseSecDivChange event to the iScope control.

Added the OnMouseDownObject, OnMouseUpObject, OnMouseMoveObject, and
OnDblClickObject events to the iObjectCanvas control. These events will fire
when the specific mouse effect occurs on a object within the control. The event
parameters includes the handle for the specific object causing the event to
fire.

Added Support for CodeGear Delphi & C++ Builder 2009.

Added CustomizeLabelEventText property to the PlotAxis object. This new
property is used in conjunction with the OnXAxisCustomizeLabel event. It is only
necessary to use this property in VBScript and JavaScript applications because
HTML does not support passing text by reference. So in these types of
applications, do not use the ALabel parameter passed in the event to modify the
label text, and instead use this new property.

ActiveX and VCL/CLX Version 4.0.0 Service Pack 0

Bug Fixes:

None.

New Features:

Added Support For Borland's Turbo Delphi.

Added Support For Borland's Turbo C++.

Added Support For Borland's RAD Studio 2007.

Added Support for Borland's Delphi 2007.

Added Support For Borland's C++ Builder 2007.

Added PointerFillEnabled and PointerFillColor properties to the iSlider
control.

Added the following events to the iPlot and iXYPlot controls...

OnGetMouseCursorChannel

OnGetMouseCursorXAxis

OnGetMouseCursorYAxis

OnGetMouseCursorDataCursor

OnGetMouseCursorDataView

OnGetMouseCursorLegend

OnGetMouseCursorLimit

OnGetMouseCursorTable

OnGetMouseCursorAnnotation

ActiveX and VCL/CLX Version 3.1.0 Service Pack 5

Bug Fixes:

Fixed property editor lockup issues
in ActiveX containers when using the Color, Font, and etc dialogs.

Fixed scrolling issue with the plot
legend. Would occur when the plot control was first resized such that not all
legend items could be displayed and the scroll bars appeared. Then the user
would need to scroll the list down one or more items. When the plot control
was then resized large enough to fit all legend items, the list would still be
scrolled and the scroll buttons would disappear.

Added missing WordWrap checkbox in
the iLabel property editor.

Fixed the Plot axis Master-UI-Input
issue that caused other axes to not respond to mouse-wheel movements.

Fixed Plot Annotation bug that would
occur when the X-Axis was in DateTime mode. There was an error in the span
pixels calculation for the width of the annotation.

Fixed PlotAnnotation OuterMargin
being ignored when the style property is set to ipasTextBox and multi-line text
is displayed.

Fixed issue with the plot control
axis labeling where when in the Prefix mode, the 0.0 value tick label would show
up as 2.78f (0.000000000000278) due to floating point storage/rounding issues.
The new code detects this rounding issue and displays a hard-coded "0.0" string.

Fixed bug on the iXYPlot control
data-cursor that would result in small inaccuracies with the returned X&Y
values.

Fixed bug with Iocomp controls that
support saving strings properties to file and contained multi-line text. The
symptoms would be when reloading the properties, multi-line string properties
would only load the first line and all other lines would be dropped.

Fixed resource leak in iLedRound
control. Would result in a HRGN object being leaked each time the Led was drawn.

Fixed ALT key trapping problem on all
controls in the ActiveX version.

New Features:

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 ResetStartTimeOnFirstDataPoint property to the iPlotChannel
object. This property is useful if you are adding data with an elapsed time
using the AddYElapsedTime or AddYElapsedSeconds methods and you want the
first data-point to start at zero.

Added AllowOutOfOrderXValues and DrawOutOfOrderXValues properties to the
Plot control Channel type (iPlotChannel for VCL and iPlotChannelX for
ActiveX). The iPlotChannel is designed assuming that the X-Values are
incremental. This allows for high-speed drawing of the channel data using
the y = f(x) formula. For a default plot control setup, you will not receive
an error if you add data-points with an out-of-order X-Value. Set the
AllowOutOfOrderXValues property to False so that an exception is raised when
an out-of-order X-Value is added. If you need to have out-of-order x-values,
set the DrawOutOfOrderXValues property to True, but you will loose the
high-speed drawing optimization capability.

Added ClickRectLeft, ClickRectRight, ClickRectTop, and ClickRectBottom
properties to the iPlotAnnotation object (All properties are in pixels).
These properties where added to allow you to determine the extents of
annotations like the Text and TextBox which have their extents determined by
the Text, Font, and etc. attributes. These new properties are not calculated
until the plot is repainted. If you need to position another object based on
these property values immediately, you will need to call the ReCalcLayout
method to force a recalculation of all pixel based property values.

Added UseCachedInerpolatedData property to the plot control
iPlotDataCursor object. This property is used to speed up calls to the
GetInterpolatedYValue method. When this property is set to False, each call
to the GetInterpolatedYValue method requires a ReCalcLayout method call. If
you are in a loop calling GetInterpolatedYValue many times, performance can
suffer significantly. Typically, this scenario applies when using a curve
fitting interpolation style like Cubic-Spline, Polynomial, and etc. where
you want to iterate over the visible data to get the displayed interpolated
values. For this case, set UseCachedInerpolatedData to True, make any other
display settings, and then call the ReCalcLayout method once before looping
and calling GetInterpolatedYValue. Note: You are restricted to visible data
when using this technique.

Added Scalar and Offset properties to all opc-items. Used for scaling
and or applying an offset correction to an opc-item's data. On new opc-data
from the opc-server, the data is multiplied by the scalar before the offset
is applied. This feature is only support on opc data that is of type real or
integer. The scalar and offset is not applied to data with types like
Boolean, String, and etc. The PlotChannel adds an OPCScalar and OPCOffset
property that is used for the y-value. The XYPlotChannel adds an OPCScalar,
OPCOffset, OPCScalar2 and OPCOffset2 property. The OPCItemName, OPCScalar,
OPCOffset are used for the x-value and the OPCItem2Name, OPCScalar2,
OPCOffset2 are used for the Y-value.

Added options to allow showing and customization of data-points hints to
the user. Set the channel ShowDataPointHints property to True to allow a
hint box to be shown next to the data-point. The plot must also be the
select mode and the data-point markers must also be visible for this option
to be enabled. By default, the x&y value for the data-point will be shown
and will be formatted using the respective axes labeling formatting. To
provide your own formatting, use the OnDataPointCustomizeHint event and
change the AText parameter to the desired text you want displayed.

Added OnMouseDownDataPoint, OnMouseMoveDataPoint, and OnMouseUpDataPoint
events to the plot channel objects. These events will only fire when the
channel is enabled, the plot is in the select mode, and data-point markers
are shown on the channel.

Added Image property to the Plot Annotation object. When this property
is set to a non null value, the ImageIndex and ImageListIndex properties are
ignored even if they point to a valid image in one of the three different
imagelists. Note: The Style of the annotation must also be set to
"ipasImage" for the image to be displayed. The lower left pixel of the image
is used to set the transparent color of the image. If you do not want the
image to be transparent, make sure to set this pixel to a color that does
not match any other color in the image. You can also use the new
ImageLoadFromFile method to load the image directly from a file. Also added
an ImageClear method to make it easy to clear out the image in many
different ActiveX development environments.

Added None to the TiPlotAxesControlStyle which is used by the
PlotDataView AxesControlMouseStyle and AxesControlWheelStyle properties.
These new enumeration allows you to independently turn of the DataView Mouse
and Wheel axes control.

Added property ShowDisabledState to the iSwitchRotary, iSwitchSlider,
iSlider, and iKnob control. This property allows you to control whether the
control draws itself in a disabled state when the Enabled property is set to
False. This feature is helpful when you have background colors that do not
contrast will be disabled text and borders that are drawn using black and
gray colors.

Added Image rotation capability to the iObjectCanvas control. Use the
GetObjectImageRotation and SetObjectImageRotation methods on the
iObjectCanvas to Get or Set the rotation of the image object.

Added new PlotAnnotation style called ipasRectangle2. The ipasRectangle2
style uses the X, Y, X2, and Y2, properties of the annotation instead of the
X, Y, Width, and Height like on the ipasRectangle style. The main reason for
this addition is to eliminated the wobble in the annotation when resizing
it. The wobble occurs due to aliasing of the mouse movements along with
dividing it evenly into the new Width and or Height value.

Added a new property to the PlotAnnotation and PlotLimit called
SelectModeOnlyInteraction. This property is set to true by default meaning
that the plot object will not be mouse interactive will the plot data-view
is not in the select mode. Setting this property to a false will cause the
object to be interactive in any data-view mode (Select, Zoom-box, or
Data-Cursor). The main benefit of this property is to allow these objects to
generate mouse-move events regardless of the mode of the data-view.

Upgrade the AngularGauge to hide the last tick label when the
ArcRangeDegrees is set to 360 degrees. Before this upgrade, you would have
the Min label overlapped by the Max label. Only the Min label will now be
shown.

Added 2 additional color sections to the iLedBar and iLedSpiral
controls. There are 4 new properties called SectionColor4, SectionColor5,
SectionEnd3, and SectionEnd4. The SectionCount property upper limit has been
changed from 3 to 5 to support the two addition color sections.

Added VK_APPS key support to plot object pop-up menu support. The pop-up
menu will now pop-up when hitting the menu-list keyboard key.

Addded OnAnnotationMoveUser event to the plot controls. This event will
fire anytime the user moves an annotation and the index of the annotation is
passed in the event handler parameters.

Addded OnAnnotationResizeUser event to the plot controls. This event
will fire anytime the user moves an annotation and the index of the
annotation is passed in the event handler parameters.

Added the following properties, methods, and events which were present
on the Plot control main VCL interface, but were missing on the ActiveX
interface...

Add CloseAllServerConnections method to the iOPCManager component. This
method allows you to force all OPCServer connections to close. This method
is useful when the DCOM connection to the OPC server has been lost and you
wish to terminate all connections from the iOPCManger's point of view. After
this method has been called, re-add your opc-items, or call the Activate
method on the existing opc-items have the connect re-established.

Added TextLineAlignment property to the plot annotation sub-object. This
property allows you to specify how multiple lines of text are aligned
horizontally in the annotation. Applies to the Text and TextBox style of
annotation.

Added the ability for the user to zoom-box while in the scroll/zoom mode
by using the right mouse button. Before, the user had to switch the plot
control into the zoom-box mode to be able zoom into a specific area using
the left mouse button. The user can now perform a zoom-box operation using
the right mouse button while in the scroll/zoom mode. The left mouse button
is still used to scroll/zoom as before. The user must move the mouse more
than 5 pixels in either direction to initiate the zoom-box operation. If the
user moves the mouse less then 5 pixels in either direction while the mouse
is down, then releases the mouse, the pop-up menu will still appear as
before.

Added the AxesControlAllowInSelectMode property to the Plot Data-View
object. This property allows scrolling and zooming of the plot control while
in the Select mode (Also assuming the AxesControlEnabled property is set to
True). Before, you had to turn off the select mode to be able to scroll or
zoom the view (Also assuming the Zoom-Box mode has not selected). The new
right-click zoom-box mode is supported by this option.

Added Visible, BackGroundColor, FontColor, and UseControlFontColor
properties to the Keyboard control button properties. With these properties,
you can hide or customize the look of a specific keyboard button.

Added support for adding 2 or more OPC-Items using the same property
name on the control. Typically, this option would be used to control 2
different digital signal's on the OPC-Server.

Added OPCItem2Name, OPCScalar2, and OPCOffset2 properties to the Plot
control channel object. These properties give you the ability to have a
separate OPC item for the X and Y value for each data-point and also to
scale and offset the value. Normally, the OPCItemName property is used to
specify the OPC-Item for the Y-Value and the X-Value is generated based on
the OPCXValueSource property setting. When having the X & Y value sourced
from an OPC-Item, use the OPCItemName property to specify the OPC-Item for
the data-point X-Value and use the OPCItem2Name property to specify the
OPC-Item for the data-point Y-Value.

Added ability for the Plot control Label object to support images. Use
the ImageListIndex and ImageIndex property to use an image from one of the 3
internal ImageList's in the plot control. Or use the Image property or
ImageLoadFromFile method to load an image through code dynamically. Use the
ImageClear method to dynamically clear the image. The image will be centered
horizontally using the Alignment property of the label. The MarginLeft
property is used if the Alignment is set to iahLeft. The MarginRight
property is used if the Alignment is set to iahRight. Both the MarginLeft
and MarginRight properties are ignored if the Alignment is set to iahCneter.

ActiveX and VCL/CLX Version 3.0.8 Service Pack 4

Bug Fixes:

Fixed property editor
bug that would cause lockups in several different development
environments when click on Color, Font, Picture, and etc. dialogs.

Fixed tabbing problems with the ActiveX controls in Visual C++.

Fixed OPC Item browsing bug where an Access Violation would occur when trying to browse more than 512 items in a given branch.

Fixed XYPlot
data-cursor bug where the data-cursor would always measure the first
channel regardless of what channel was selected.

Fixed drawing error bug
in the iPhonePad and iKeyBoard control where some buttons would draw
using the disabled control even if they were not disabled.

New Features:

iLinearGauge

Added GetPointersFocused and SetPointersFocused methods.

iLable

Added WordWrap property for multi-line support.

iPlot and iXYPlot

Added OnAddChannel event.

Added OnAddXAxis event.

Added OnAddYAxis event.

Added OnAddDataCursor event.

Added OnAddDataView event.

Added OnAddLegend event.

Added OnAddLimit event.

Added OnAddTable event.

Added OnAddAnnotation event.

Added OnRemoveChannel event.

Added OnRemoveXAxis event.

Added OnRemoveYAxis event.

Added OnRemoveDataCursor event.

Added OnRemoveDataView event.

Added OnRemoveLegend event.

Added OnRemoveLimit event.

Added OnRemoveTable event.

Added OnRemoveAnnotation event.

ActiveX and VCL/CLX Version 3.0.6 Service Pack 3

Bug Fixes:

Fixed bug in PieChart and PercentBar where slices less than 1% would not draw.

Fixed name conflict problem with Visual C++ wrapper generator. The
ItemCount property would conflict with the GetItemCount method. changed
GetItemCount method name to Get__ItemCount (note: Get is followed by a
double underscore).

Fixed hit test code for all plot objects. Plot objects on the
bottom would respond to the hit-test first. Plot objects on top now
respond to the hit-test first.

Fixed Zoom-To-fit bug on the PlotAxis class. When the channels
assigned to the axes had no data, calling the ZoomToFit method on the
axis would cause the Span to be set to zero. The ZoomToFit method has
been changed to not modify the Span in this case.

Fixed X-Axis label formatting bug that caused the
application/process to lock up. when the Data-Time mode was enabled on
the axis and the increment in labels was in days, months, or years, for
some cases, the label generation code would enter an endless loop
causing the application/process to lock up.

Fixed clipping problem when printing the plot control with a gradient background.

Fixed bugs on Plot Data-Cursor that would result in a null being
displayed if the pointer was exactly over the first or last data-point
in a channel.

Fixed Zoom-To-Fit bug on the axes that would occur when all
data-points had the same value. Would result in the application/process
locking up.

AnalogOutput would always display a "." character for the decimal
separator. No Fixed to use the International settings on the operating
system.

Fixed iPaintToDC method on all controls to use the correct X & Y offset.

Fixed data-cursor problems in displaying the correct values when the axes were configured for logarithmic display.

Distribution Changes:

The "iOPC.dll" has now been renamed
to "iOPC2.dll". The new "iOPC2.dll" has interface changes to make it
compatible with our .Net components/controls. Version 3 SP3 for ActiveX
& VCL and Version 3 SP2 for .Net must now use the new iOPC2.dll
during development and distribution. If you have OPC applications
developed with our ActiveX or VCL controls prior to Version 3 SP3, you
must still distribute them with the older "iOPC.dll". It is recommended
that both dll's be distributed to the System32 directory on the client
machine and they can coexist together.

New Features:

iAngularGauge

Added a new property: FaceBevelSize

Added a new property: FaceBevelStyle

Added a new property: FaceColor

Added a new property: FaceStyle

Added a new property: Hub3D

Added a new property: ShowFace

iEditCustom

Added a new property: AcceptOnLostFocus

iGaugeComponent

Added a new method: SetPointersPositionNoEvent

iKnob

Added a new property: Color

iLedBar

Added a new property: FillReferenceEnabled

Added a new property: FillReferenceValue

iLinearGauge

Added a new property: AllowFocus

Added a new property: KeyArrowStepSize

Added a new property: KeyPageStepSize

Added a new property: MouseWheelStepSize

Added a new property: PixelsMax

Added a new property: PixelsMin

iOPCItem

Added a new method: GetDataNow

Added a new property: UpdateSuspended

iPositionComponent

Added a new property: MinMaxStyle3D

iSlider

Added a new property: PixelsMax

Added a new property: PixelsMin

iSwitchLed

Added a new property: MomentaryStyle

iSwitchRotary

Added a new property: FaceBevelSize

Added a new property: FaceBevelStyle

Added a new property: FaceColor

Added a new property: FaceStyle

Added a new property: OuterMargin

Added a new property: PointerFaceBevelSize

Added a new property: PointerFaceBevelStyle

Added a new property: PointerFaceColor

Added a new property: ShowFace

Added a new property: ShowPointerFace

iThermometer

Added a new property: IndicatorUserCanMove

Added a new property: PixelsMax

Added a new property: PixelsMin

iAngularLogGauge

Added a new property: AutoSize

Added a new property: FaceBevelSize

Added a new property: FaceBevelStyle

Added a new property: FaceColor

Added a new property: FaceStyle

Added a new property: Hub3D

Added a new property: OuterMargin

Added a new property: ShowFace

iLogGauge

Added a new property: PixelsMax

Added a new property: PixelsMin

iTank

Added a new property: AutoTankShadowColor

Added a new property: TankShow

iPlotAnnotation

Added a new property: OuterMargin

Added a new property: PolyPointAdd

Added a new property: PolyPointsClear

Added a new property: PolyPointsCount

Added a new property: PolyPointX

Added a new property: PolyPointY

Added a new property: ReferencePositionX

Added a new property: ReferencePositionY

Added a new property: ReferenceSizeX

Added a new property: ReferenceSizeY

iPlotAxis

Added a new property: TrackingIncrementStyle

iPlotChannel

Added a new method: CalcIndex

iPlotChannelCustom

Added a new property: ClipToAxes

Added a new property: UserCanMoveDataPointsStyle

Added a new property: UserCanMoveDataPoints

iPlotComponent

Added a new method: AnnotationDefaultReference

iPlotCustom

Added a new property: AnnotationDefaultReferencePositionX

Added a new property: AnnotationDefaultReferencePositionY

Added a new property: AnnotationDefaultReferenceSizeX

Added a new property: AnnotationDefaultReferenceSizeY

Added a new method: RefreshLayoutManager

iPlotDataCursor

Added a new method: GetInterpolatedYValue

Added a new property: SnapToDataPoint

iPlotLegend

Added a new property: LineColumnHeight

Added a new property: LineColumnWidth

iPlotObject

Added a new method: DoEditMenuItemClick

Added a new method: HitTest

Added a new property: UserCanEdit

iPlotTable

Added a new property: RowDisplayStartIndex

iScopeTimeBase

Added a new method: AddSecPerDiv

Added a new method: RemoveAllSecPerDiv

iXYPlotChannel

Added a new property: OPCItem2Name

Additional New Features:

General

iAngularGauge,
iLinearGauge, iLogGauge, iAngularLogGauge, iSlider, iThermometer,
iSwitchRotary, and iSwitchSlider controls now show their scales
disabled when the Enabled property is set to False.

Plot Control1) All text based Plot Annotations have been upgraded to support text alignment and text rotation.2) Improved speed for property and data-file loading.3) Added all US and International printing paper sizes.

ActiveX and VCL/CLX Version 3.0.4 Service Pack 2

Bug Fixes:

Fixed Plot Pack axis tracking bug introduced in Version 3.0.2 SP1
which would prevent correct tracking when the tracking style was set to
Expand/Collapse.

Fixed bug in table sizing if located on top or bottom of the DataView.

Fixed bug in the iPlotAxis Zoom-To-Fit feature that was using non-visible points to determine the new min and span.

Fixed bug in all components that would prevent a window shutdown while the components were running.

Fixed bug in Plot Pack Property editor regarding the addition of
labels through the layout manager. The incorrect label would be
loaded when selecting "Edit..." through the layout manager.

Fixed LoadPropertiesFromFile and Save PropertiesFromFile where the
RingBuffer property would be 0 regardless of your current setting or
the setting stored from the SavePropertiesFromFile method when loading
the properties when the channel is set to the FullFeature data style.

Fixed bug in iEdit, iAnalogOutput, and iIntegerOutput components
that caused the text displayed to be truncated when the text was wider
than the width of the control. You would be unable to scroll back
to edit the text that was not in view.

Fixed DataView gridline bug when using non solid lines. Colored lines would sometimes be drawn between the dots or dashes.

Fixed Plot Pack runtime property editor bug where radio group titles would not be translated.

Fixed bug with ActiveX property editors under the Citect SCADA
development environment where the property editor would lockup when
clicking on buttons when there was a list box on the same property
editor tab.

Fixed ActiveX bug where SetWindowPos() call in Visual C++ would generate an exception.

Fixed bug in iObjectCanvas where overlapped objects would be
misidentified in the OnClickObject event. The lowest ZOrder
object would be identified in the OnClickObject event as being clicked,
even though an object with a higher ZOrder that overlapped the object.

Fixed Plot Pack Data Cursor bug where a hidden hint would still be
"clickable", interfering with selection of the DataCursor line.

New Features:

Upgraded Plot Component Compact Interval Data Style to support
relocating the origin X-Value of the Data Set by modifying the DataX[0]
property of the channel. The DataX value of the first data point
(i.e. DataX[0]) dictates the origin of the data set for that channel
when using the Compact Interval Data Style, since the interval between
each data point is fixed to save memory space. Modifying
DataX[0], however, doesn't change the fixed interval set after adding
the first two data points. To change the interval, clear the
channel and re-add all channel data.

Added ability to change Compact Interval start reference after data
has already been added to the channel by setting the X-Value of the
first data point.

Added ChannelNameColorStyle to the iPlotLegend object. Allows
the channel name text that is displayed to track other object
colors. Possible values are Font, Channel Color, X-Axis Font
Color, or Y-Axis Font Color.

Added PointerColor and PointerHighlightColor properties to the iSwitchRotary and the iSwitchSlider components.

Added GetPointersVisible and SetPointersVisible to all Gauge Components.

Added to the Plot components two new properties:
LastPropertiesFileName, LastDataFileName and three additional events:
OnAfterSaveProperties, OnAfterLoadData, and OnAfterSaveData.
Using these new three events in addition to the existing event:
OnAfterLoadProperties, you can be notified when the user has
saved/loaded data or property files. The two new properties are
useful for determining the filename used during the load or save
operation.

Updated iImageDisplay to not draw the image as "disabled" when the Enabled property is set to FALSE.

Updated iPlotAxis to include a new ZoomToFitFast method, and a new
TrackingStyle called ExpandCollapseFast. The older ZoomToFit and
ExpandCollapse features would iterate through the entire data set to
find the high and low point of the data when scaling. The new
Fast methods use the RunningXMax, RunningXMin, RunningYMin, and/or
RunningYMin methods of the channel object which cache the historical
Max/Min values, thereby greatly speeding up the ZoomToFit and
ExpandCollapse features. Warning: do not use this new feature if you modify historical data unless
you manually call the appropriate GetXMax/GetXMin or GetYMax/GetYMin
functions to force an update of the corresponding running totals. (e.g.
if you modify the Y-value of a previous data point, you must call
GetYMax and GetYMin to update the "RunningYMax" and "RunningYMin" for
the new "Fast" features to work correctly. ).

Updated iPlotLegend with two new properties: ViewStartIndex and
ViewStopIndex. These properties are useful when needing to know the
topmost and bottommost indexes of the visible channels in the
Legend. For example, if you have 100 channels in the chart, and
the Legend is currently showing channel 52-60, then ViewStartIndex=51
and ViewStopIndex=59.

Added Transparent and Stretch properties and features to the iImageDisplay component.

Added Stretch property to iRotationDisplay component.

Upgraded iSwitchPanel AutoSize to take the height into
consideration in addition to the width when adjusting the KnobRadius
property.

Updated Precision property on the iAnalogDisplay and iAnalogOutput
components to support -1 to indicate the "G" formatting style.
The "G" formatting style will format numbers as the shortest possible
string. It will display the value either as a whole number or
exponent, whichever is shortest. If the precision is unknown at
design-time this will ensure that all digits to the right of the
decimal place are shown.

Added OnAfterOpenEditor and OnAfterCloseEditor event handlers to
the Plot Pack components to notify when the run-time property editor is
opened and closed.

Added an Arc object to the iObjectCanvas component. The
following methods have been added to support this new object type...
AddArc
SetObjectAngles
SetObjectStartAngle
SetObjectStopAngle
GetObjectStartAngle
GetObjectStopAngle

Plot Pack iPlotChannel object was updated to support a new
interpolation style: Differential Terminated. This style is the
same as the Differential interpolation style, except there is no line
drawn from the last data point out to infinity.

Added RotationDesiredSpacing property to the iSwitchRotary
component. Supports 22.5, 45, or 90 degree specification.
The desired portion means that it will only use the angle specified if
the "number of positions" * "desired angle" <= "360 degrees".

Added Candlestick option to the iPlot Channel High-Low
feature. Below is a list of new properties added to support this
new feature...
HighLowStyle
HighLowShadowColor
HighLowBullishColor
HighLowBearishColor

Upgraded Plot Pack Axes labeling to support rotated text. Can be set to 0, 90, 180, and 270 degree rotation.

Upgraded iObjectCanvas component to support polygons. Below are the following methods added to support this feature...
AddPolygon
ObjectAddPolyPoint
ObjectClearPolyPoints

Added Print Preview support to the Plot Pack printing feature.

Added Plot Pack OnBeforeDataCursorUpdate event. Allows
customization of formatting or other customization before the actual
strings are generated for display on the cursor.

Added PNG image support to all components: SaveImageToPNG and
GetBytesPNG methods. Plot pack save dialog updated to support PNG.

Added JPEG image support to CLX components under Linux.

Added Plot Pack printing support for CLX components under Linux.

Added new iOPCManager non-visual component for use in conjunction
with our OPC-enabled components. Allows combining of OPC
connections to servers through a common connection. Previously, each
individual component would make its own connection to the OPC server
and its own group. The new iOPCManager along with the new
iOPC.dll improves performance by utilizing Shared Server Connections
and now adds support fro adding groups that can be shared among OPC
Items of our components. The iOPCManager component has a visual
property editor for adding/removing groups as well as properties and
methods that can be used to modify groups at runtime. Two new
events, OnAfterGroupUpdate and OnBeforeGroupUpdate provide notification
of updates that occur among the OPC Items utilizing a particular group.

Added multi-line support to the Plot Pack Data Cursor Hint. Use chr(13) for manual line breaks.

Added the following to OPCItems...
ActivateSuspend method
GroupName property

Tank Custom cutout style uses two new methods: CustomPointsAdd,
CustomPointsClear. Use CustomPointsAdd to add at least three
points to make a closed polygon. Added points are in the range of
0-100, representing percentage (%) of the width and height of the
component. It is recommended to restrict points between 10-90%
when the tank is shown.

Added HitTest method to all Plot Pack sub-objects (channel, y-axis,
x-axis, annotation, label, etc.). Allows you to test each
sub-object and determine if an x/y coordinate exists within the
sub-object or not.

Added Theme support to the CLX version of the components under both Windows and Linux.

ActiveX and VCL/CLX Version 3.0.2 Service Pack 1

Bug Fixes:

Fixed problem in iPlot and iXYPlot with adding null data points and
the ring buffer. In previous versions if you had enabled the
ring-buffer and were adding null data points to the channel, data would
sometimes be corrupted.

Fixed bug in iSwitchLED where the accelerator key(& placed
before accelerator key), though it would still function, would not be
shown with an underline but would show the "&" character instead.

Fixed several issues with the CLX version of the Instrumentation and Plot Pack components.

Help file corrections. Fixed VCL/CLX help file integration
issue with Delphi and C++ Builder where event help topics would not
come up properly in the object inspector when you press F1.

Fixed Plot Pack LoadPropertiesFromFile method where Label objects
were not properly loaded. If you would load properties from a
file, you would get a miss positioned, extra label object than expected.

Fixed memory leak in Plot Pack components which would occur only when the component was destroyed.

New Features:

Added Table support for Plot Pack Components. Allows you to
position custom tables anywhere around the DataView. Allows
unlimited number of rows and columns with individual formatting for
each column. Supports scrolling if the number of rows exceeds the
display area. Allows you to specify the text in each cell.

Upgraded iAnalogOutput key-filter to support the current regional setting for the decimal separator character.

Upgraded iLedMatrix indicator caption to support multiple lines of
text. Accepts line feed, carriage return, or both to indicate a
break in the line.

Added methods and properties for customizing the tick labels on the
Plot Pack Axes. Now supports a custom mode where you can add your
own custom labels (specify the text) at specified locations.

Added RecalcLayout to recalculate all coordinates of all Plot sub-objects without having to wait for the next repaint.

Added TransferChannelData method to Plot components to allow
transferring of data from one channel to another. Used to allow
easy transfer of basic (Only X, Y, null, and empty properties.
All other data point and channel properties are not transferred) data
from one channel to another. {Appends Data. Need to clear out
destination channel for exact copy}.

Upgraded LineX and LineY Plot Annotations to extend to the full
extent of the DataView by utilizing the new Annotation-specific clip to
axes property.

Upgraded iPlot Plot Pack Channel to support High Low graphs/data
points. You must have the Channel Data Style set to Full Feature
to utilize this feature. Added the following methods and properties...
AddHighLow
DataHigh
DataLow
DataOpen
DataClose
HighLowEnabled
HighLowBarColor
HighLowBarWidth
HighLowOpenShow
HighLowOpenColor
HighLowOpenWidth
HighLowOpenHeight
HighLowCloseShow
HighLowCloseColor
HighLowCloseWidth
HighLowCloseHeight

Added ForceStacking property to Axes. During normal layout,
only touching ends of stacked axes would take the Stacking End Margin
spacing into account. By setting this property to True, then all
axes will use the Stacking End Margins on all ends. This was done
to ensure that outer, stacked axes will have the same end margins as
all axes in the same ZOrder. If this property is set to False
(the default), then the axes will behave as previously indicated.

Added PasswordChar property to iEdit to support display of password characters.

Added the following events to all visual ActiveX controls that were missing them...
OnMouseDown
OnMouseMove
OnMouseUp
OnKeyDown
OnKeyPress
OnKeyUp

Added CTRL key support to the Plot Pack Axes and DataView as a NOT
operator to switch between scrolling and zooming when clicking and
dragging the axes.

Added SHIFT key support to the Plot Pack. If the MouseStyle
(or WheelStyle) is not set to Both, then the SHIFT key will switch
between the X-Axis or Y-Axis style. If the MouseStyle (or
WheelStyle) is set to Both, then the SHIFT key is ignored.
Simultaneous use of both the SHIFT key and CTRL key is supported.

Plot Pack DataView upgraded to support mouse movements and mouse
wheel movements to support scrolling and zooming of the axes.
This is similar to the zooming and scrolling feature in our older
iStripChart control. Added the following properties to the
DataView...
AxisControlEnabled (Default = False)
AxisControlMouseStyle (X-Axis, Y-Axis, or Both, Default = Both)
AxisControlWheelStyle (X-Axis, Y-Axis, or Both, Default = X-Axis)

Upgraded Right-Clicking Plot Pack code to support right-clicking
channel trace lines to bring up the channel pop-up menu. Supports
clicking anywhere on the trace line and within 10 pixels of the trace
line.

Added OnXAxisMinSpanChange and OnYAxisMinSpanChange events to iPlot and iXYPlot.

ActiveX and VCL/CLX Version 3.0.0 Service Pack 0

Bug Fixes:

Fixed OptionSaveAllProperties property on Plot Pack
components. The property was previously ignored when saving
properties to a file.

Fixed ModeComboBox where if you selected an item and then deleted
all items, the ItemIndex property would still point to the deleted item
which would cause errors when accessed.

Fixed tabbed-dialog bug in Visual C++ where the application would
crash if one of our components was on the tabbed-dialog and you
alt-tabbed to another application and then back to the Visual C++
application.

Fixed Plot Pack bug where if you delete an Axis and then re-add the
same type of Axis, the Channel's associated axis pointer would not
reconnect to the new axis until the next repaint. This would result in
functions such as ZoomToFit on the Axis not working correctly until
after a control repaint.

Fixed Plot Pack bug where an extra margin would have been
incorrectly added for any plot object placed in-between the DataView
and an axis, and that object had its Visible property set to FALSE.

Fixed iXYPlotX Plot Pack ActiveX bug where the Image List and Translations were not being streamed.

Added Layer Ordering support to all Plot Pack objects.
Currently only has an effect on objects that are displayed in the
DataView area (e.g. channels, annotations, limits, Axes setup as
Cartesian, etc,). DataCursors are currently always forced
to the topmost layer and cannot be changed. The highest layer
number are drawn on top of lower layer numbers. If the layer
numbers are the same, then the Iocomp internal layering order is
preserved (i.e. the old layering order is used from previous
versions). By default, all objects are set to a layer order of
100 for backwards compatibility.

Stats page upgraded to clear itself when changing channel objects
in the runtime property editor. It would previously show the
previous channel's information. The page is not refreshed
automatically since auto refresh may cause a performance decrease when
refreshing information concerning very large datasets.

Layout Viewer upgrade to support automatic resizing of objects when
attempting to stack using drag and drop. You can simply drag and
drop a plot object on another of the same type to have them
proportionally sized and stacked automatically. Previously you needed
to manually size the objects before you could stack them in the Layout
Viewer.

Added PrinterName property to the Plot Pack components to specify which printer to use when using the built-in printing facilities.

Upgraded Plot Pack Run-time Property Editor Channel Stats page speed.

Added new OnDataCursorCustomizeHint event to the Plot Pack components.

Plot Pack Data Cursor object upgraded to support pointing to all
channels in addition to pointing to individual channels. When
pointing to all channels, the Data Cursor is hidden, and by default,
all channel cursor data is displayed in the Legend. Optionally
you can turn off the display of the data in the legend and display the
data in your own legend by reading the data directly from each channel.

Added the following properties to the Plot Pack Data Cursor object...

ChannelAllowAll - Allows the user to specify that the Data Cursor points to all channels using the popup menu on the Data Cursor.

ChannelShowAllInLegend - Specifies whether the Legend
is used to display the Data Cursor X and Y values when ALL channels
have been selected by the Data Cursor. The X and Y value columns
will automatically be shown if the Legend object and the Data Cursor
objects are visible and the Data Cursor's Channel reference is set to
"All", even if the X and Y columns have been hidden.

Added the following new properties to the Plot Pack Channel object for use with the Data Cursor "All" Channel mode...

DataCursorXText - Read only property that obtains the text that would be displayed in the data cursor hint for the X-Value.

DataCursorYText - Read only property that obtains the text that would be displayed in the data cursor hint for the YValue.

DataCursorXValue - Read only property that obtains the numeric value that would be displayed in the data cursor hint for the X-Value.

DataCursorYValue - Read only property that obtains the numeric value that would be displayed in the data cursor hint for the Y-Value.

DataCursorStatus - Read only property that specifies whether the X and Y-Values are valid, null, or empty.

WrapColDesiredCount - Specifies the number of
legend columns to reserve for the legend. If you specify a value
of 3, then three columns will be reserved even if they are not filled
with channel entries. This is useful when you will be varying the
number of channels, but want to keep the legend at a certain size and
specified number of columns.

WrapColAutoCountEnabled - Specifies whether the
legend automatically adjusts the number of columns to take up the least
amount of space within the control. If increasing the number of
columns decreases the "footprint" of the legend, then the legend will
automatically increase the number of displayed columns. After the
maximum has been exceeded, then scroll bars will appear..

WrapColAutoCountMax - Specifies the maximum
number of columns that should be allotted when WrapColAutoCountEnabled
is set to TRUE. This actual number of columns will be equal or
less than this value depending on space requirements and the number and
makeup of legend entries. This property in effect causes the
legend to display the scroll bars if the maximum number of columns is
reached, and the number of channel legend entries exceeds the available
space.

WrapColSpacingMin - Specifies the minimum amount
of spacing between legend entries (not the spacing between the channel
name, channel X-Value, channel Data Marker, etc. columns). When
WrapColSpacingAuto is FALSE, then this value is the fixed spacing
between columns. When WrapColSpacingAuto is TRUE, then the
spacing will be adjusted to fully justify the legend entries within the
bounds of the legend, but the spacing will never be less than the
minimum spacing specified.

WrapColSpacingAuto - Specifies whether the spacing between the legend column entries is automatically adjusted by the legend.

WrapRowDesiredCount - Specifies the number of
legend rows to reserve for the legend. If you specify a value of
10, then three rows will be reserved even if they are not filled with
channel entries. This is useful when you will be varying the
number of channels, but want to keep the legend at a certain size and
specified number of rows.

WrapRowAutoCountEnabled - Specifies whether the
legend automatically adjusts the number of rows to take up the least
amount of space within the control. If increasing the number of
rows decreases the "footprint" of the legend, then the legend will
automatically increase the number of displayed rows up to the maximum
specified by WrapRowAutoCountMax. After the maximum has been
exceeded, then scroll bars will appear..

WrapRowAutoCountMax - Specifies the maximum
number of rows that should be allotted when WrapRowAutoCountEnabled is
set to TRUE. This actual number of columns will be equal or less
than this value depending on space requirements and the number and
makeup of legend entries. This property in effect causes the
legend to display the scroll bars if the maximum number of rows is
reached, and the number of channel legend entries exceeds the available
space.

WrapRowSpacingMin - Specifies the minimum amount
of spacing between legend entries. When WrapRowSpacingAuto is
FALSE, then this value is the fixed spacing between columns. When
WrapColSpacingAuto is TRUE, then the spacing will be adjusted to fully
justify the legend entries within the bounds of the legend, but the
spacing will never be less than the minimum spacing specified.

WrapRowSpacingAuto - Specifies whether the spacing between the legend entry rows is automatically adjusted by the legend.

Important New Legend Properties Note and Discussion - Col
is used in the property names to distinguish between the references to
Column in other properties of the legend. When we refer to the
property ColumnSpacing or ColumnTitlesVisible, we are referring to the
internal columns of each legend entry such as "Marker", "Line", "Title"
, "X-Value", "Max", "Min", "Mean", etc.. The properties using
"Col" refer to the multiple-column feature that we have just added
where multiple columns of channels (and their associated displayed
information) can be displayed instead of a single column in the
legend. For example, when a legend is horizontal, you will
probably have an average of 5 columns of channels displayed.

This features has also been added in such a way as to be backwards
compatible with previous versions of our Plot Pack components.
Therefore, the new properties above will default to emulate the
behavior of the original legend. However, to take full advantage
of the "automated" nature of the new legend, we recommend that you set
the following properties to the following values. In a future
service pack release of Version 3.x, we will set the defaults to these
values, be can't right now due to backwards compatibility concerns...

Added new OPC event handler to all OPC-enabled components:
OnBeforeNewOPCData. This event passes the index of the OPC item
and the variant data value by reference (pointer reference) so that you
can modify or scale the value before it is passed to the component and
before the standard event handlers are called.

Added independent Cursor and Legend data point value formatting to
the Plot Pack axis objects. Each channel is associated with a
Y-Axis and X-Axis. Each axis is responsible for specifying the
formatting of displayed data for values associated for that axis.
This goes for channel data displayed in other objects, such as in the
cursor and/or legend objects. By default, all objects display X
and Y values formatted as shown in the respective axis. For
example, if the X-Axis is formatted as date/time "hh:nn:ss", then
X-values displayed in the Data Cursor are displayed formatted the same
way. You can now override this default formatting, and specify
that the formatting be different when displayed in either the Legend or
Data Cursor Objects. The following new properties in the X and Y-Axis
objects...

CursorUseDefaultFormat

CursorFormatStyle

CursorDateTimeFormat

CursorPrecisionStyle

CursorPrecision

CursorMinLength

CursorMinLengthAutoAdjust

LegendUseDefaultFormat

LegendFormatStyle

LegendDateTimeFormat

LegendPrecisionStyle

LegendPrecision

LegendMinLength

LegendMinLengthAutoAdjust

The following properties serve as the "Default Formatting" for the
Legend and Cursor Objects when the UseDefaultFormat properties are set
to TRUE...

LabelsPrecision

LabelsPrecisionStyle

LabelsFormatStyle

DateTimeFormat

LabelsMinLength

LabelsMinLengthAutoAdjust

Updated installer to support Delphi 7 VCL and CLX components.

Upgraded Plot Pack to correctly display long labels in the X and
Y-axes so that they are not "cropped" when near the edge of the
component. This has resulted in a change in the layout of the
plot component objects, particularly the Legend and Label
objects. Now, the Label object and Legend object
top/bottom/left/right margin properties are strictly interpreted.
This will result in the gap between the Legend and the Data View as
well as Labels and the Data View shrinking to be exactly the margin
specified by the top/bottom/left/right margin properties.

Since the default top/bottom/left/right margins for the Legend are set
at a default of one character, the margin between the Data View and the
Legend will now be exactly one character. Since the default
top/bottom/left/right margins for the Label is set at a default of zero
characters, the margin between the Data View and the label will now be
exactly 0 characters (plus font specific kerning). This means
that with most fonts, there will be a kerning gap (extra space added
below the baseline to accommodate characters that are generally drawn
below the baseline such as "j" or "g"), but letters that go below
the kerning baseline will now touch the Data View. To fix this,
we recommend setting the margin nearest the Data View to 0.25
characters (or alternatively setting all margins for all labels to 0.25
characters). This change should not affect most users in a
negative way, but will slightly change the visual layout of some
objects.

iObjectCanvas now supports loading images into a built-in image
list that can also stream into your form. You can also load image
lists from resources using name or ID.

Added GetDisplayXToPixelsX and GetDisplayYToPixelsY to
iObjectCanvas. Allows conversion between the component's display
units and pixels on the component.

New VCL/CLX, ActiveX WinHelp, and ActiveX HTML Help for MSDN (Pre January 2002
Edition) Files including many corrections.

Added new iLCDMatrix component. Includes 5x7 built-in
character font for displaying 5x7 dot-matrix display
text. Also supports loading external character sets
of custom size. Several additional 5x8 character sets are
included. An external font editor is available for download from
our website.

Added new iMotor component.

ActiveX and VCL/CLX Version 2.1.2 Service Pack 6

Bug Fixes:

Fixed "Interface Not Supported" exception in Visual Basic.NET and C#.NET that occurred with the Plot Pack.

Fixed problem where popup dialogs and runtime property editors
would block other threads from accessing the component while they were
visible. Unnecessary Lock and Unlocks by these dialogs were
removed.

Redesigned the Iocomp Theme Panel component in the Iocomp
Design-Time property editors to fix a bug under Windows 95/98/ME
operating systems when applying changes. Nested panel components
within the theme panel were causing conflicts with the Windows API
combo boxes that were used.

Limited DateTime format dates to years between 1400 to 9000.
This resolves zooming errors that occurred when trying to zoom past
these limits.

Fixed multiple pointer streaming issue in the ActiveX Gauge
Components. If multiple pointers were setup at Design-Time, they
would not be streamed correctly to the form.

Fixed problem with Plot Pack zooming when using Logarithmic scales.

Fixed Plot Pack Differential Interpolation drawing algorithm
problem. The last data point should draw to infinity. If
the last data point went out of view, the infinity line would
incorrectly disappear.

Fixed problem where an additional pointer would be added to our
gauge components every time you loaded the project in Visual Basic.

Fixed Theme problem where width and height of preview component
would be switched if the orientation of the component was opposite of
the default setting.

Fixed GetBytesJPEG memory leak and speed issues.

Fixed recursive painting bug when using stacked axes in the Plot
Pack. This only became obvious with large, viewable data sets.

Fixed OPCItem browser limitation of 256 computers when browsing a
Windows computer domain. The limit has been upgraded to support
approximately 1000 computers per domain when browsing.

Fixed bug during development under Windows 95a/b where the
component would appear to be unlicensed. This did not affect
deployed applications under Windows 95a/b, only development.

Fixed runtime property editor bug with plot pack when running under
large fonts. Form would not automatically scale properly to large
fonts.

Added Width, Height, Left, and Top properties for ActiveX
containers that do not provide these properties by default. These
properties are specified in pixels. If the container overrides
these properties then the container will be responsible for these
properties. For example, Visual Basic overrides these properties
and replaces them with its own container properties. Its
container properties are specified in Twips by default and not in
Pixels.

Added SaveAnnotationsToFile and LoadAnnotationsFromFile methods to
the Plot Pack Components. This method should be called after
loading properties from a file since the loading of properties clears
out the entire control.

Added OnBeforeZoomBox event to Plot Pack Components. VCL and CLX Components: Passes two parameters by pointer
that you can modify, ZoomRect and Cancel. ZoomRect has the pixel
coordinates of the zoom box that can be easily converted to Axes
values. Cancel allows you to cancel the Zoom Box if you wish.ActiveX Components: Passes five parameters by pointer
that you can modify, Left, Right, Top, Bottom, and Cancel. The four
coordinate parameters have the pixel coordinates of the zoom box that
can be easily converted to Axes values. Cancel allows you to
cancel the Zoom Box if you wish.

Added four new methods to Plot Pack Annotation Object:
PositionXToPixels, PositionYToPixels, PixelsXToPosition,
PixelsYToPosition for converting pixel coordinates to position values.

Added one new method to Plot Pack Annotation Object: UserCanSize
which allows the application end-user to resize the rectangle
annotation objects.

Added two new styles to the Plot Pack Channel Data Marker Styles: VerticalLine and HorizontalLine.

Updated Plot Pack Axes Tracking Style characteristics for
SmoothScroll. Before, this style would only scroll when the new
value was greater than the max of the axis. The new
characteristic is to scroll when the new value is greater than the max
or less than the min.

Added new event handler to the Plot Pack:
OnAnnotationCoordinatesChange and OnAnnotationCoordinatesChangeFinished
events which allows you to handle changes of the X, Y, X2, Y2, Width,
Height, or any other future position/size property of Annotation.
This event is generally used in conjunction with the UserCanMove and
UserCanSize properties which allows your application end-users to move
and size Annotation Objects. The event will fire from user
generated events as well as changes to the position/size of annotations
by your code.

Added Bar support to the iPlot component channel object.

Added LabelsVisible property to the Axis Objects (X and Y-Axes) of
the Plot Components. This property allows you to hade the axes
labels, showing only the axes tick marks

Added the following Grid Line properties to the DataView object of the Plot Pack:
GridLineXMajorCustom
GridLineXMajorColor
GridLineXMajorWidth
GridLineXMajorStyle
GridLineXMinorCustom
GridLineXMinorColor
GridLineXMinorWidth
GridLineXMinorStyle

Added FocusHandle property to keyboard control. Allows
setting the window handle of the component that will receive
keystrokes.

All ActiveX components upgraded to include Width, Height, Enabled,
and Visible properties. Non-visible components (such as the timer
components) do not contain these properties. These properties are
provided for ActiveX containers that do not already supply their own
version of these properties.

Added Image Annotation style. Includes built-in image list for use with Annotations and other future uses.

Added three built-in custom image lists that you can use with Image Annotations. Images must be loaded at design-time.

Upgraded Plot Pack Data Cursor to convert Carriage Return and Line
Feed characters to a single space in the Data Cursor Tool Tip to avoid
strange characters.

Added new OPC methods to Instrumentation and Professional Pack Components.
OPCItemUpdateSuspend which allow deactivation of updates from the server.
OPCItemUpdateResume which allow re-activation of updates from the server after suspension by using OPCItemUpdateSuspend.
GetOPCItemData
GetOPCItemTimeStamp
GetOPCItemQuality
SetOPCItemData

Added new OPC event: OnOPCData which will notify you every time an
update is received from the OPC Server. The standard component
events (such as OnPositionChange in the iKnob control) are only fired
when an update that changes the current component property.

Added to MarkersTurnOffLimit iPlotChannelCustom object. This
allows you to suppress the drawing of DataMarkers according to the
limit set here. If the number of DataMarkers to display is
greater than this value, all DataMarkers for the channel will not be
drawn. This speeds up drawing operations when displaying large
numbers of data points on the screen.

Added the following event handlers to the Plot Pack. Each
event passes four parameters: Index of the Object, Cancel Flag By
Reference, ScreenX in Pixels, and ScreenY in Pixels.
OnPopupMenuChannel
OnPopupMenuXAxis
OnPopupMenuYAxis
OnPopupMenuToolBar
OnPopupMenuLegend
OnPopupMenuLimit
OnPopupMenuAnnotation

Added Cartesian Coordinate Axes support to the Plot Pack components. Added three new properties to the Axis objects...
CartesianStyle
CartesianChildRefAxesName
CartesianChildRefValue

Updated Plot Pack Digital Channel to support FastDraw.

Added new property to Axis object: GridLinesVisible.

Upgraded CubicSpline and Interpolation Trace styles to support
empty and null data points. Empty data points will be
skipped. Null Data points will generate a break in the trace
line.

Added the following new properties and methods to the iPlotChannelCustom (channel object for all Plot Components)...

DataPointSize - the number of bytes used by each data point added to the chart.
MaxDataPoints - the maximum theoretical number of data points that you
can fit into the chart. For 32-bit Windows, this represents the
maximum theoretical number of data points that will fit into the
2GBprocess memory limitation ( minus the applications' memory
footprint) imposed by Windows.
Capacity - the number of data points that have been
MemoryUsed - the currently allocated memory used by the data buffer. This value is in bytes.

DataStyle - specifies the features available to the data points.
The Compact Style uses 8 bytes per data point, and stores X and Y data
point data with Single Precision. This style loses features
regarding individual data marker styles in exchange for a smaller
memory footprint. The Standard Style uses 24 bytes per data
point, and stores X and Y data point data with Double Precision.
The Standard Style allows for use of the individual data point data
marker styles. The Full Feature Style has extended features that
is open for future expansion

iAnalogOutput, iAnalogDisplay, and iEdit have the following properties added...
ErrorActive - When True, then the following three properties control the display of the error drawn on the control.
ErrorFont
ErrorText
ErrorBackgroundColor

Added GetOPCItemActive to the ActiveX components.

Added AutoError to the OPC item. For VCL components, access
the OPC item object to access AutoError. For ActiveX, use the
GetOPCItemAutoError and SetOPCItemAutoError methods. If AutoError
is True, then if the quality of the OPC data received from the OPC
Server is not good, then the ErrorActive property of the component will
be set to True. If the OPC Server data is good, then the
ErrorActive property of the component will be set to False. When
the OPC item is connected to the server, and AutoError is set to True,
the ErrorActive property is automatically set to True indicating that
the component is in an invalid state.

Optimized LoadDataFromFile method in the Plot Pack to be 500% faster than previous versions.

Optimized Code for speed on Data, Axis, and FastDraw features of the Plot Pack.

Added Compact Interval data type to Plot Pack. This style
allows for the storage of single-precision fixed x-interval data points
resulting in the ability to store approximately 538 million data points
total in the chart (this represents the 2GB limit of applications
running under Windows. This value depends on memory usage in
other parts of your application, and the physical and virtual memory of
your computer).

Upgraded iEdit and iAnalogOutput to inherit from our own custom
iEditCustom control. Since these controls no longer inherit from
the Windows API or QT API Edit-box control, they no longer have the
bugs and inconsistencies that come along with the API controls.

Upgraded iModeComboBox control to inherit from our own custom
combo box control. Since this control no longer inherits from the
Windows API or QT API combo-box control, it no longer has the bugs and
inconsistencies that come along with the API control.

Added new TextRectangle Annotation style to the Plot Pack
components. Allows the display of a text string inside of a
sizeable rectangle.

Fixed SavePropertiesToFile method in Plot Pack. Would
previously only save one cursor even if you had multiple cursors in the
chart.

Fixed OnPositionChange property. Would not fire if changed by an OPC Server.

Fixed HP VEE/Agilent VEE compatibility problem. Plot Pack
Mouse events were blocked by VEE during high CPU load. Symptom:
Axis would continue to move once mouse was released if there was a
large CPU load.

New Features:

Added iEdit component with OPC string support.

Improved OPC browser panel. Browsing for computers is now
hierarchical according to domain. Included look-ahead feature on
OPC items to see if sub items exist below each item in the visible list.

Plot Pack now supports OPC connections to channels objects.

Keyboard upgraded to support Numeric Keypad style.

Add SelectActive property to Plot Pack Toolbar interface. This property allows you to tell if the select tool is active.

Added OPC support to the iPanel, iPieChart, iPercentBar, iLedMatrix, and iSpectrumDisplay components.

Updated Switch Rocker 3-way to write Value property to OPC Server.

Updated iKeypad to ensure keys are not transparent when using the transparent background feature.

Added CachedDrawing feature to Property Editor of iLedMatrix

Upgraded iSlider and iKnob to only write to an OPC server after a
change has finished (i.e. after the mouse button has been
released).

Updated 7-Segment Analog to Round values instead of Trunc.
This will synchronize the behavior with our other double-value display
components. Clock components will continue to Trunc double values.

Added two new Annotation Reference styles: iprtXChannelYDataView
allowing the annotation's X coordinate to move with the channel and the
Y coordinate to be fixed to the DataView and iprtXDataViewYChannel,
allowing for the annotation's X coordinate to be fixed to the DataView
and the Y coordinate to move with the channel.

ActiveX and VCL/CLX Version 2.0.8 Service Pack 4

Bug Fixes:

Fixed Internet Explorer error where the visible, width, and height properties would no longer function in VBScript.

Fixed iSwitchLed and iThermometer property editor bugs under
ActiveX which were preventing the property editors from allowing the
user to hit the OK button or to navigate to development environment
specific property editor tabs.

Fixed bug in Plot Pack Data Cursors where clicking on one cursor
would cause all other data cursors to be assigned to the same channel.

Fixed problem when using MoveWindow in Visual Basic to move
component causes components to redraw incorrectly. Usually happened
when component was moved off the form and then back onto the form.
Components would appear to disappear in some situations.

New Features:

Added FocusControl support to the iLabel component for VCL applications.

Added GetBytesJPEG method for use in obtaining a JPEG image for use
in Microsoft IIS server ASP web pages to all component except for
iTimers, iThreadTimers, iAnalogOuput, and iModeComboBox.

Added multiple Label support to Plot Pack. Title properties
depreciated in favor of multiple Label support, but are provided for
backwards compatibility.

Added multiple pointer support to iAngularGauge, iLinearGauge,
iAngularLogGauge, and iLogGauge. Original position and other pointer
specific properties provided for single-pointer applications and
backwards compatibility.

Added LoadPropertiesFromFile and SavePropertiesToFile methods to
all components except for TiTimers and TiThreadTimers. Allows streaming
of component properties to a text file for later retrieval.

Added "High" and "Low" to Plot Pack Data Cursor to signify Digital High and Digital Low values in Digital Channels.

Added LinkedCell to various components for use with this feature in Microsoft Excel.

Added OnClickIndicator event to iLedMatrix. The row and column are
passed in the event handler to indicate which indicator was clicked.

Added new iTank, iValve, iModeComboBox, and iSwitchPanel components.

Added CLX component versions of all of our components for use with Delphi 6 for Windows and Kylix 1-2 for Linux.

Added OnMouseDownDisplay, OnMouseMoveDisplay, and OnMouseUpDisplay
events to the Object Canvas to provide similar events to OnMouseDown,
OnMouseMove, and OnMouseUp but providing the Cartesian coordinates of
the Mouse instead of Pixel coordinates.

Added GetPixelsXToDisplayX and GetPixelsYToDisplayY methods to
provide a mechanism to convert between the 0,0 upper-left-hand corner
pixel coordinates provided by the Windows API or QT API and the Object
Canvas' 0,0 Cartesian Coordinates.

Added FontColor property to ActiveX interface for the iModeComboBox component.

Added CachedDrawing property to components that use background
caching for improved performance. This property should be left on
unless the ActiveX container doesn't properly support background
caching (such as Microsoft Internet Explorer).

Added Mouse Wheel support to iKnob, iSlider, iSwitchSlider, and iSwitchRotary.

Added MouseWheelStepSize property to iKnob and iSlider.

Added RunningMin, RunningMax, and RunningMean properties. These
property values are only valid for continuous values. These values are
invalid if you add Null or Empty data points to the channel. If you
modify previous data points, these values will also become invalid, but
you can force them to revalidate by calling the Get method variations
of these properties: GetYMax, GetYMean, and GetYMin methods.

Added ChannelNameMaxWidth property to specify the maximum width of
the Channel Name column to allow word wrapping of long channel names.

Added New Legend Columns. Use the ShowColumnYMax, ShowColumnYMin,
ShowColumnYMean. These values display the running Max, Min, and Mean of
the channel.

Fixed LineX annotation bug in Plot Pack where Y and Y2 values would be swapped.

Fixed iSevenSegmentClock issue where control would not properly
fire the countdown event if the clock ran past midnight and would
instead start counting up after reaching 0 and would not fire the event.

Added FastDrawEnabled property to Plot Pack components. Speeds up drawing to screen with large data sets.

Added Glyph support to iSwitchLED and border support.

Integrated OPC client features into components. Please note that a
nominal distribution fee applies if you utilize the OPC features of our
components. OPC Features are not supported under CLX Applications for
Delphi 6 and Kylix 1 for Linux. OPC or OLE for Process Control is a
communications standard for communicating with factory floor automation
hardware via the network.

ActiveX and VCL Version 2.0.4 Service Pack 2

Bug Fixes:

Plot Pack: The index in the data array is offset by one if the log is started before no data has been added to the chart.

Instrumentation: SwitchRocker3Way descendent for BackGroundColor property should have a capital "G".

ActiveX and VCL Version 2.0.2 Service Pack 1

Plot Pack Updates

Fixed error in code where each plot component would create the
runtime property editor when the component is created, and not destroy
the runtime property editor after it was show in the component. The
result would be that each plot component would consume large amounts of
system resources. Under Windows 95/98 systems you could only use 2 plot
components, and Windows NT/2000 systems you could only use 3-4 plot
components depending on system resource use.

Fixed problem in runtime property editor. Layout editor would not
function properly if other properties in the runtime property editor
were changed.

Fixed Visual C++ bug where having more than one plot component on
form causes Visual C++ to give errors when running application. Random
access violations occur when you have opened the property editors.

Fixed Datax, DataY, and DataNull properties. They previously had no effect.

Added AddDataArray method for adding synchronous data from a one or two dimensional array.

Added Digital Channel support.

Added HideAllMenuItems property.

Added Expand/Collapse to Scale Format Style.

Added SetLimitLinesOnTop method.

Added SetGridLinesOnTop method.

Added support for PixelsToPosition method to support invisible axes.

The following Data and Property streaming methods were added to
support saving and loading of channel data and both channel and
component properties. Added to both channel and main plot component
interfaces.

Instrumentation and Professional Component Updates

Spectrum display upgraded to support setting individual colors for each bar.

Angular Gauges now support degree range between 0 and 360 (previously 0 to 355).

Phone Pad upgraded to support individually changing captions for each button to a custom value.

Added show property for each button in the Phone Pad component.

Spectrum Display streaming problem in Visual Basic fixed. NOTE! The
BarValue property has been removed from the ActiveX interface. If you
were using this property before, use the SetBarValue method instead.

Analog Output now responds to arrow keys instead of treating them as tab keys.

The following Control and Warning Limit properties were added to iStripChart...
GetChannelControlLimitUpperLineWidth
SetChannelControlLimitUpperLineWidth
GetChannelControlLimitLowerLineWidth
SetChannelControlLimitLowerLineWidth
GetChannelWarningLimitUpperLineWidth
SetChannelWarningLimitUpperLineWidth
GetChannelWarningLimitLowerLineWidth
SetChannelWarningLimitLowerLineWidth

Fixed recursion problem in Simplicity when double-clicking on component.

Fixed component destruction bug in PowerBuilder.

Fixed GetChannelMax and GetChannelMin bug which caused the last data point to be ignored.

Updated Help Files.

ActiveX and VCL Version 1.1.4 (Service Pack 6)

Fixed MinMaxPointerMargin property change error which resulted in the Scale not being redraw in its new position.

Fixed iSwitchSlider and iSwitchRotary Position streaming error that would have limited it to a maximum value of 2.

Fixed iSevenSegmentClock bug where the OnCountDownComplete event
would unrepentantly fire and the timer would be disabled if the counter
was enabled at runtime with the time set to 0 and the direction set to
Up.

Fixed drawing error in knob control that would occur with some NT video drivers.

Fixed iAnalogOutput SetFocus and KillFocus problems in ActiveX.

Upgraded iOdometer control to rotate all digits. WARNING: you may need to expand the width of the control to
accommodate the new painting routines.

ActiveX (Only) Version 1.0.4

VCL (Only) Version 1.0.4

StripChart Apply button not enabled for most property changes until after at least one channel is added (Fixed).

ActiveX and VCL Version 1.0.2 (Service Pack 1)

Change iStripChart ZoomX and ZoomY methods to zoom based on a 100%
reference. The previous code was zooming based on a 0% reference and
required positive percentages to zoom out and negative percentages to
zoom in. Now functions as intended. To zoom out 100%, specify 2.00. To
zoom in 100%, specify 0.50.

Fixing painting problem on iSwitchSlider and iSwitchRotary when modifying labels through code.

Fixed access violation caused when using the OnPositionChange event
handler. Removed code that could possible execute the event handler
before other components had been created on the Form causing an access
violation.

Source code files are now distributed with VCL components.

ActiveX Only 1.0.2

Removed all unused Properties and Methods that would not allow ActiveX components to properly install in Borland products.

Removed Hidden attribute on all read only properties. Would cause
the read only properties to be missing in the Visual C++ wrappers.

ActiveX and VCL Version 1.0.1 (Hot Fix #1)

ActiveX Users

If you are upgrading from version 2.x, it is recommended to first
install Version 2.x SP7 (or higher), open, modify, and save your
existing projects. This step will ensure that there are no
compatibility problems with default component properties that are
changed in this version.

Visual C++ users must regenerate wrappers for components in existing projects to utilize new features/methods.

VCL Users

If you are upgrading from version 2.x, it is recommended to first
install Version 2.x SP7 (or higher), open, modify, and save your
existing projects. This step will ensure that there are no
compatibility problems with default component properties that are
changed in this version.

Rebuild Library/Package for changes to take effect. This installer
will reinstall new package files and will automatically recompile the
Library/Package for you. If the automatic recompilation fails,
you can manually recompile the packages.

CLX Users [Delphi 6/7 and C++ Builder 6 for Windows]

Our VCL and CLX components are split into two different packages.
The installer will automatically compile and install the packages for
you. If the automatic compile and install fails, you will need to
manually compile both packages to use both the VCL and CLX versions of
our components in Delphi 6/7 or C++ Builder 6.

CLX Users [Kylix for Linux]

Installing with the Linux Installer

Quick Installation Instructions

Install and setup Kylix on your system. Note : Please do not
run Kylix while logged in as ROOT. There are known issues with doing
anything in KDE/GNOME/KYLIX while logged in as ROOT. Either log in as a
general user or log in as a user with root privileges when using Kylix.

Open a shell and navigate to the folder where you downloaded our
Linux installer. Execute "./setup" file to execute the installer.

Follow the wizard in the installer to install our CLX component
source code. You will need the keycodes for your purchased product to
complete the installation.

All components are automatically installed into the IDE. Installation is Complete!

Help Files are in the form of a local website, located inside the
Iocomp Components folder you chose during installation. Use your
favorite web browser to view them.

If you have any bug reports or problems, please contact Iocomp Support directly or fill out a bug report online.

OPC deployment licensing is now enforced by our
installer. If you previously purchased an OPC Deployment license,
and have not entered the OPC Deployment License into the keycode
manager during installation, you will need to do the following to
properly install the OPC Features...

Re-run our installer from the Add/Remove Control Panel

Select "Modify", click the NEXT button, and then enter your OPC Distribution keycode where requested.

Continue and complete the installation, asking questions as needed.

You do not have to re-compile your Delphi or C++ Builder packages to install OPC.

If you did not purchase an OPC Deployment license and are using the
OPC features of our components, you will be able to use the OPC
features in "evaluation-mode" which will allow you 10 minutes of OPC
communication per run of your application. This will be indicated
by the appearance of "Evaluation" in the OPC property page tab of our
component custom property editors.

A new "iOPC.dll" file will be installed in your Window's System32
folder. This file contains the OPC features of our
components. You can determine if the iOPC.dll is the Full or
Evaluation version by right-clicking and viewing the Version Properties
of the file. The "Description" will contain the words "Iocomp OPC
DLL (Evaluation)" if you are using the Evaluation Version. This
file must be distributed along with your application and any required
OPC core dll's.

Note: Version Service Pack 3 and above must
use the iOPC2.dll in order for the controls to properly use the OPC
connectivity features of our controls.

Please refer to the OPC Install Notes located in the
Iocomp Product Directory. An "OPC Distributables" folder has been
provided in the Iocomp Product Directory with all files that will need
to be distributed to your clients. Also see the OPC Foundation's website for official distribution packages for the required OPC core files.