Author : |
TGTrend is the ideal component for You when You
have a need to show numerical values as a function of time. This component can
show a optional number of signals at the same time.
How many points, (values) is also settable, the DataDeep is configurable at runtime. Together with
functions as time zooming, panning in both time and value (X / Y) directions
and a “marker” function makes this component ideal for this type of work.
Per each channel can the following values be
set:
· Color,
· Scale max and min value,
· Units, and number of digits, (format strings)
· Enabled (viewable),
· Adaptive Plot,
· Name on the channel,
· Description,
· Limit lines:
o
max
o
min,
o
line type
o
LimitLineEnable (viewable)
To make the interfacing in the end application
easier, so is the following information stored for each channel :
· Tabell
(string value),
· TagNo
(Integer value).
All the
values above are handled at runtime, and are therefore very easy to change and
update.
The
selected channel is shown with a “bold”
line, to make easier to recognize. The value labels, on the left side of the
graph, are taken the values from the selected channel’s ScaleMax
and ScaleMin values.
When
using the limit lines, they also indicating when the values exceed the limit by changing
from thin to bold line.
With the
feature Adaptive Plot so is it
possible to show max/min values for the curve, even when the display time is so
selected that the sampling time is less than a pixel. This feature can be
selected per channel or common for all the channels.
The time zoom feature gives the user a nice
tool to take a closer look at some values. By selecting the time zoom command,
(Shift + left mouse) the user can mark the area of interest. When releasing the
mouse key, the new, selected time area is shown.
The
panning function for time (PanTime) and value (PanScale) makes even easier for the user to place the curves,
and for finding the correct time point.
With the
left mouse key, the user activates the Marker
function. Through an event, so is the corresponding time and values for each
channel reported into the main application.
This
component can be used for both viewing historical data’s and for logging on
line. When then numbers of samples, per channel, exceed the data deep, the
oldest sample for the channel is erased (FIFO function). In the demo examples
it’s able to both of the functions.
Compiled demo’s can be downloaded from the homepage, home.ueab.net/gpsoft. The source code
for demos can also be found there.
TGTrend is released as a shareware. To use it after a
30 days shareware evaluation period, and to to
compile it into yuor applications that are distrubed to others, You have to
register (i.e. purchase the registered edition).
Why register ?
How do I register ?
Using share*it! as an e-commerce provider, TGTrend can be registered very
easily online over a secured internet connection. Share*it! supports
a wide variety of payment options such as credit/debit card, wire
transfer, check, and cash. It accepts the following
credit/debit cards: Visa, MasterCard, Eurocard,
American Express, JCB and Diners
Club, as well as
License Type |
Price |
|
Single Developer License |
EUR 100 |
Buy Now! |
Site License |
EUR 290 |
Buy Now! |
To register TGTrend using this option, please click on
appropriate Buy Now! link. Should you have any
questions regarding online registration, please refer to Customer Care Center service
located at share*it! web site.
As soon as the registration procedure is completed,
you will receive the complete source code, as a ZIP-archive, by email.
If the online registration is not, for any reason,
feasible, TGTrend can also be registered offline by issuing a direct wire
transfer to my bank account. From the table below, please select an appropriate
license type you would like to purchase: either a single developer license
(one license per developer seat) or a site license for unlimited number
of developers in your company.
License Type |
Price |
Single Developer License |
EUR 90 |
Site License |
EUR 275 |
To register TGTrend using this option, please contact
me directly by e-mail and
supply the following data:
Based on the supplied data, I will compose a proforma invoice and send it to you by e-mail along with
all information necessary for issuing a bank wire transfer. As soon as the
registration procedure is completed, you will receive the complete source code,
as a ZIP-archive, by email.
This License Agreement is a legal
agreement between you (either as an individual or a single entity) and Göran Pettersson, GPsoft
("Author") for the software product ("Software") identified
above, including any software, media, and accompanying on-line or printed
documentation.
You should carefully read the following
terms and conditions before using the Software. Unless you have a different
Licence Agreement signed by the Author, your use of the Software indicates your
acceptance of this License Agreement.
The Software is owned by the Author and is
protected by Swedish copyright law and international copyright treaties. This
License Agreement gives you use of the Software NOT ownership of it.
This is NOT a free
software. Subject to the terms below, you are hereby licensed to use the
Software for evaluation purposes without charge for a period of 30 days. To use
the Software after a 30 day shareware evaluation period, a registration is
required. Unregistered use of the Shareware Edition of the Software after a 30
day shareware evaluation period is a violation of this License Agreement.
For an information
regarding the registration procedure please refer to the Software
documentation. When payment (registration fee) is received, you will be granted
an access to the Registered Edition of the Software.
The Shareware Edition of the Software can
NOT be compiled into applications that are distributed to others, be it
freeware, shareware or commercial. For this purpose there is a Registered
Edition of the Software.
Single developer license of the Software may
be used by a single developer who uses the software personally on one or more
computers.
You may access the Registered Edition of
the Software through a network, provided that (i) you
have obtained appropriate number of individual developer licenses for the
Software covering all developers that will access the Software through a
network, or (ii) you have obtained a site license for the Software covering
unlimited numbers of developers that will access the Software through a
network.
Once you have registered the Software, you
have a royalty free rights to compile the Registered Edition of the Software
into your applications that are distributed to others, be it freeware,
shareware or commercial. In addition, by registering the Software you are
always guaranteed to get an access to the full Software source code, and any future updates of the Software free of charge
during its life-time.
The Registered Edition of the Software
including the Software source code may NOT be redistributed in any form to anyone else. If your clients require full source
code then they must purchase an additional developer license(s).
You may NOT redistribute any derivative
works of the Software without prior written permission from the Author.
Provided that you are distributing the
Shareware Edition and NOT the Registered Edition, you are hereby licensed to
make as many copies of the Shareware Edition of the Software as you wish; give
exact copies of the original Shareware Edition to anyone; and distribute the
Shareware Edition of the Software in its unmodified form via electronic means.
There is no charge for any of the above.
You are specifically prohibited from
charging, or requesting donations, for any such copies, however made; and from
distributing the Software with other products (commercial or otherwise) without
prior written permission from the Author.
The Author can NOT and does NOT guarantee
that any functions contained in the Software will meet your requirements, or
that its operations will be error free. The entire risk as to the Software
performance or quality, or both, is solely with the user and NOT the Author.
You assume responsibility for the selection of the component to achieve your
intended results, and for the installation, use, and results obtained from the
Software.
The Author makes no warranty,
either expressed or implied, including with-out limitation any warranty with
respect to the Software documented here, its quality, performance, or fitness
for a particular purpose. In no event shall the Author be liable to you for
damages, whether direct or indirect, incidental, special, or consequential
arising out the use of or any defect in the Software, even if the Author has
been advised of the possibility of such damages, or for any claim by any other
party.
All other warranties of any kind, either
expressed or implied, including but NOT limited to the implied warranties of
merchantability and fitness for a particular purpose, are expressly excluded.
For more information,
please contact us by email gpsoft@ueab.net.
The component has the following, special interesting,
property’s that can be reached from the Object Inspector:
Property |
Type |
Comments |
AdaptivePlot |
apNone, apAll, apSome |
Setting the default type of plotting. Note, the
value apSome
can only be read, not setted. |
BorderColor |
TColor |
The color of the border |
Color |
TColor |
Color of the plot area |
Cursor |
TCursor |
Type of cursor |
Datadeep |
Integer |
How many samples can be stored inte
the array’s |
Font |
TFont |
Set the font type, style, size, etc |
GridColor |
TColor |
The color of the grid itself |
GridMode |
gmNone, gmVer, gmHor, gmBoth |
Select if the grid should contain lines, and if
then, in which direction |
MarginTop |
Integer |
Set the margins around the plot area. |
MarginLeft |
Integer |
|
MarginRight |
Integer |
|
MarginBottom |
Integer |
|
NoOfChan |
Integer |
Sets how many channels that will be allocated in the
graph. NOTE! The channel array is
zero-based. This value can be changed under runtime. When
reducing the NoOfChan,
the nonexisting channels values are erased and
corresponding arrays are freed. If the NoOfChan is increased, arrays are allocated to
the size of DataDeep, and all the values are reset’ed for each new channel. |
X_DistBetweenLines |
Integer |
Sets the minimum distance between the lines in
pixels. Note! The distance between the lines is depending on the selected
display time and the size of the component itself. |
X_LinesBetweenLabels |
Boolean |
Selects if lines should be drawn between the “label
lines”. |
Y_DistBetweenLabels |
Integer |
Sets the minimum distance between the lines in
pixels. Note! The distance between the lines is depending on the selected
display time and the size of the component itself. |
Y_DistBetweenLines |
Integer |
Sets the minimum distance between the lines in
pixels. Note! The distance between the lines is depending on the selected
display time and the size of the component itself. |
Y_LinesBetweenLabels |
Boolean |
Selects if lines should be drawn between the “label
lines”. |
Version |
String |
Only viewable, just for information. |
The following property’s can only be reached at
runtime.
Property |
Type |
Comments |
ActiveChan |
Integer |
Read, or set, the active channel (plotted in bold). |
StartTime |
Extended |
This value set the start time (left value) of the
graph. |
EndTime |
Extended |
This value set the end time (right value) of the
graph. |
DurationTime |
Extended |
This set’s how much will be displayed in the graph.
The value is the result of EndTime – StartTime. |
Note ! The
update of the graph is mainly trigged by changing the time values. For example,
when You update the EndTime value so is the StartTime value recalculated ( StartTime := EndTime – DurationTime), and the graph is updated.
When You change the DurationTime so is
the EndTime used as a “fixed point”, which means the StartTime is recalculated as mentioned above.
The component has the following events that can be
reached from the Object Inspector:
Event |
Arguments |
Comments |
OnChangedChanScale |
|
This event is fired when the user use the “PanScale”
function (right mouse). |
OnChangedMarker |
|
This event is fired when the user use the “Marker” function (left mouse). |
OnChangedTimeScale |
|
This event is fired when the user use the “PanTime”
function (Shift + right mouse). |
Note ! It’s up to the application software to respond
on this events to get the wanted functionality. For more info how to do it, see in the source code for the demo examples.
The following methods can be used in the application:
Note ! As
earlier mentioned in this document, so is the numbering of the channels
zero-based. This is important when addressing the channel in the following
procedures and functions.
This
procedure clear the array for the channel, all earlier values are deleted.
With this
procedure are the values added to the channel. Please note,
that the application program must take care of the entered values. If a new
value, with a “earlier” time value than the last
entered value in the array, so will the result be a “funny curve”.
The name of the methods are
more or less self explaining, and for that reason is the description short.
They have their counterparts in function, named Getxxx,
mentioned on next page.
.. set’s the channel visibility.
.. set’s the channel name.
.. gives the channel a description.
With this
function is it possible to format the value axis. The used syntax is the
standard for format strings in
For more
description how to use the format strings, see the Delphi Help File, under
section Format strings.
.. sets the
color of the channel. For more info how to use it, look in the source code for
the demos.
This
procedure set’s the scale max for the selected channel.
For more
info how to use it, look in the source code for the demos.
This
procedure set’s the scale min for the selected channel.
For more
info how to use it, look in the source code for the demos.
.. set’s
the visibility of the limit lines for the selected channel.
.. set’s
the value, (position), for the top limit line of the active channel.
.. set’s the
value, (position), for the bottom limit line of the active channel.
.. set’s
the style (position), for the limit lines of the active channel, as far as the
channel value not have exceeded respective values. Then is the line printed in
solid bold, independent of selected style.
This
procedure is used to store a string value, unique for the channel.
This
procedure is used to store an integer value, unique for the channel.
With this procedure is it possible to set the feature Adaptive Plot on or off per channel.
When the property AdaptivePlot
is set to apNone, and one (or more) channels are set
to True, the property is then reporting apSome.
The name of the methods are more or less self explaining,
and for that reason is the description short. These functions are also the
counterpart’s of the Set… functions described above.
Return the
status for the selected channel.
Return the
name of the selected channel.
Return the
stored description for the selected channel.
Return the
stored units for the selected channel. If nothing is returned, a default
formatting is used in the module.
Return the
color for the selected channel.
Return the
Scale max for the selected channel.
Return the
Scale min for the selected channel.
Return the
status for the selected channel.
Return the
Lim max for the selected channel.
Return the
Lim min for the selected channel.
Return the
Limit line Penstyle for the selected channel.
Return the
value for the selected channel.
Return the
value for the selected channel.
Return the
value for the selected channel.
These functions are mentioned to be used as support on
start up, see more in the source code for the demo examples.
.. return
the oldest time stored in the channel arrays. This function is mainly used to
set the StartTime after reading in values.
.. return
the newest time stored in the channel arrays. This function is mainly used to
set the EndTime after reading in values.
.. return
the highest value, stored in the array for the channel. This functions is
mainly used for a preset of ScaleMax.
.. return
the lowest value, stored in the array for the channel. This functions is mainly
used for a preset of ScaleMin.
·
The added values to a channel are added as
“FIFO”, not sorted depending on the time stamp.
If You have questions
or suggestion on enhancements about this component, or how to use it, please
send us an email on gpsoft@ueab.net.