GPsoft

Home

Register

License

Download

Feedback

TGTrend, version 1.1, from GPsoft            

Author :

Göran Pettersson, GPsoft.

1. TGTrend information

2. Register ...

3. Licence information

4. Property description

5. Event’s description

6. Methods description

7. Known limitations

8. Support

1. TGTrend information

 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.

 

Back to top …

2. Registration ...

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 ?

  • Registered users may use TGTrend after the 30 day shareware evaluation period.
  • Registered users may compile TGTrend into their applications that are distributed to others.
  • Registered users are always guaranteed to get an access to the full source code.
  • Registered users receive all future updates free of charge during TGTrend's version 1.x.
  • Registered users receive high-priority technical support via e-mail.

How do I register ?

2.a Online Registration

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 UK debit cards Solo and Switch. 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 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.

2.b Offline Registration

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:

  1. Your company name.
  2. Your company postal address including street, city, ZIP code, and country name.
  3. Name of the contact person in your company.
  4. Contact person's telephone number, including the prefix for your country.
  5. License type you would like to purchase.
  6. Total number of licenses to be purchased (applicable only if requesting more than one single developer license).

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.

 

 

Back to top …

3. License Agreement

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.

3.a Shareware Edition

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.

3.b Registered Edition

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.

3.c Distribution

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.

3.d Disclaimer of Warranty

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.

Back to top …

4. Property description’s

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 EndTimeStartTime.

 

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 := EndTimeDurationTime), 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.

 

Back to top …

5. Event descriptions

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.

 

Back to top …

6. Method descriptions

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.

procedure ResetData( Chan : Integer);

This procedure clear the array for the channel, all earlier values are deleted.

procedure AddValue( Chan : Integer; ts : TDateTime; Val : Single);

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”.

 

Back to top …

Setxxx procedures ..

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.

procedure SetChanEnabled( Chan : Integer; Val :Boolean );

.. set’s the channel visibility.

procedure SetChanName( Chan : Integer; Val :String );

.. set’s the channel name.

procedure SetChanDescr( Chan : Integer; Val :String );

.. gives the channel a description.

procedure SetChanUnits( Chan : Integer; strUnits : String);

With this function is it possible to format the value axis. The used syntax is the standard for format strings in Delphi. If nothing is entered here, a default formatting is used.

For more description how to use the format strings, see the Delphi Help File, under section Format strings.

procedure SetChanColor( Chan : Integer; Val :TColor );

.. sets the color of the channel. For more info how to use it, look in the source code for the demos.

procedure SetChanScaleMax( Chan : Integer; Val : Single);

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.

procedure SetChanScaleMin( Chan : Integer; Val : Single);

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.

procedure SetChanLimEnabled( Chan : Integer; Val :Boolean );

.. set’s the visibility of the limit lines for the selected channel.

procedure SetChanLimMax( Chan : Integer; Val : Single);

.. set’s the value, (position), for the top limit line of the active channel.

procedure SetChanLimMin( Chan : Integer; Val : Single);

.. set’s the value, (position), for the bottom limit line of the active channel.

procedure SetChanLimPStyle( Chan : Integer; Val :TPenStyle );

.. 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.

procedure SetTabell( Chan : Integer; Val : String);

This procedure is used to store a string value, unique for the channel.

procedure SetTagNr( Chan : Integer; Val : Integer);

This procedure is used to store an integer value, unique for the channel.

procedure SetChanAdaptive( Chan : Integer; Status : Boolean);

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.

 

Back to top …

Getxxx functions ..

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.

 

function GetChanEnabled( Chan : Integer ) : Boolean;

Return the status for the selected channel.

function GetChanName( Chan : Integer ) : String;

Return the name of the selected channel.

function GetChanDescr( Chan : Integer ) : String;

Return the stored description for the selected channel.

function GetChanUnits( Chan : Integer ) : String ;

Return the stored units for the selected channel. If nothing is returned, a default formatting is used in the module.

function GetChanColor( Chan : Integer ) : TColor ;

Return the color for the selected channel.

function GetChanScaleMax( Chan : Integer ): Single;

Return the Scale max for the selected channel.

function GetChanScaleMin( Chan : Integer ): Single;

Return the Scale min for the selected channel.

function GetChanLimEnabled( Chan : Integer ) : Boolean;

Return the status for the selected channel.

function GetChanLimMax( Chan : Integer )  : Single;

Return the Lim max for the selected channel.

function GetChanLimMin( Chan : Integer  ) : Single;

Return the Lim min for the selected channel.

function GetChanLimPStyle( Chan : Integer ) : TPenStyle;

Return the Limit line Penstyle for the selected channel.

function GetTabell( Chan : Integer ) : String;

Return the value for the selected channel.

function GetTagNr( Chan : Integer ) : Integer;

Return the value for the selected channel.

function GetChanAdaptive(Chan : Integer): Boolean ;

Return the value for the selected channel.

 

Back to top …

Additional Getxxx functions ..

These functions are mentioned to be used as support on start up, see more in the source code for the demo examples.

 

function GetOldestDataTime(): TdateTime;

.. return the oldest time stored in the channel arrays. This function is mainly used to set the StartTime after reading in values.

function GetNewestDataTime(): TdateTime;

.. return the newest time stored in the channel arrays. This function is mainly used to set the EndTime after reading in values.

function GetHighestData( Chan : integer): Single;

.. return the highest value, stored in the array for the channel. This functions is mainly used for a preset of ScaleMax.

function GetLowestData( Chan : integer): Single;

.. return the lowest value, stored in the array for the channel. This functions is mainly used for a preset of ScaleMin.

 

Back to top …

7. Known limitations

·               The added values to a channel are added as “FIFO”, not sorted depending on the time stamp.

 

Back to top …

 

8. Support

 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.

 

Back to top …