CapeSoft.Com
Clarion Accessories
HyperActive
Documentation
CapeSoft Logo

CapeSoft HyperActive
Documentation

Download Latest Version FAQ History
Installed Version Latest Version
Note:ClarioNet is now completely supported by HyperActive (version 1.6 onwards).

Introduction

How many times have I added the "About..." screen to my app and wished that users could just click and go straight to our website? Or that they could click on the and the new mail message would open up and they could write directly to us. Or have a list of suppliers with their e-mail addresses and web-URLs in the columns and be able to click on the URL and go directly to their website?

If you're feeling the same way, then HyperActive is for you! This easy-to-use and quick-to-add template adds the powerful object functionality, allowing you to make any control a URL. Your HyperActive control can be a string, a button, a field in a Drop List, combo or list box, a region, an entry field, a text field, an image or a panel. The HyperLink can even change color as the mouse crosses over it (for strings, and list fields), as well as cursor changes. It will take you less than a minute to add the necessary templates to your application and make the respective controls HyperActive.

But that's not all...! HyperActive interfaces with your Windows Registry, so any file, which has a browser/viewer/editor associated with its extension, can be run with one click. So you can run video clips, music/wav files, open text documents, etc straight from your application just like you would from your Windows Explorer.

There's still more! You can make the most of the functionality of HyperActive and Capesoft's File Explorer combined to open URLs inside your application.

Features

Installation

Run the supplied installation file.

Adding HyperActive to your Application

NB: You must not call your application Hyper.app.

Making a window control HyperActive is easy.
  1. Open your application and from the application window click the Global button.
  2. In the Global Properties window click the Extensions button.
  3. In the Extension and Control Templates window click the Insert button and select the Activate CapeSoft's HyperActive template from the list that appears
  4. You can read more about the Global Extension Template options further down - but lets leave the defaults as is for the moment.
  5. You will now need to add the local extension template to the required windows in your application.

Making a control on a window HyperActive

If you have not done so already, place the control(s) that you would like to make as Hyperlinks on the window.
  1. From the application window, open the Procedure Properties window for that procedure.
  2. Click the Extensions button on the Procedure Properties Window.
  3. Click Insert and select Capesoft HyperActive Control from the Class HyperActive.
  4. Change to the Options tab and use the List box on the HyperLinks tab to enter the controls to be used for the Hyperlinks. Check out the Options for the HyperActive control for more details.
  5. To customise some of the HyperActive features, you set these on the Options Tab.
  6. To ensure that HyperActive operates correctly with some other 3rdparty templates, you may need to specify settings for those templates on the Other Products tab in the template.

Options for the HyperActive Control

Select the Control to make HyperActive.

String Controls:

string control screenshot

Control is the label of the control that you want to make HyperActive (i.e. set to respond like a URL link).

All controls can be made a Skype URL. Use the URL is Skype function drop down to enable one of the Skype functions, otherwise leave the URL is Skype function set to 'None'. TIP: If you want to use the Call option to a local number, then the local number must be prefixed with + and the countrycode.

You can set the highlight color and style of the string control (in the Highlighted Appearance group) as the mouse passes over it, as well as the normal color and style (in the Normal Appearance group). You can also set the URL for the string control. If you don't use quotes then the contents of the variable will be used as the URL.

If the string is a variable, then you need to set the positional width to 'Default' (in your window properties editor) for that control. This will enable the control to resize, thus ensuring that the control is only HyperActive when the mouse is over the text (because the control is the same size as the text).

You should check the Refresh the Variable URL in the TakeEvent? (variable URLs only) so that the HyperActive control's properties are correct.

Button, Combo and Item Controls:

The only option for the HyperActive button control is the URL, a string constant (in quotes) or a variable (the contents of the variable will be used as the URL). If no URL is specified, then the text of the Button/Item/Combo is used for the URL.

Entry Controls:

entry control screenshot

You can set the appearance of the control (i.e. the font color and underline property). There is no region properties on the Entry Control so the Font will not change as the mouse goes over the control.

The control will use the entry as the URL, and when the control receives an EVENT:ACCEPTED, it will run the browser/ mail for the URL that the user entered. You can override this default method in the following ways:
  1. You can specify an Event for the URL in which case it will use the specified event instead of the EVENT:ACCEPTED event.
  2. You can check the Standard Hyperlink action (Mouseleft and cursor) checkbox - which will treat the entry control as a normal Hyperlink - so the cursor will be displayed as the mouse enters the entry control's area. If you click on the entry control, then the URL will be activated. If the control is not selected, then the first mouse left click will select the entry control, and subsequent ones will activate the URL.
  3. You can check the Outlook standard action (Ctrl+MouseLeft) checkbox in order to imitate the Outlook manner of running Hyperlinked URL (similar to (2) except using Ctrl+Mouseleft instead of MouseLeft).

Text Controls:

You may specify the URL that is used when the control receives an EVENT:ACCEPTED.

DropList and List Controls:

drop list and list controls screenshot

You need to specify which column contains the URL (Column Number for URL), and if the URL is an e-mail address (URL is Email).

Although the object will defer an e-mail address in a web column to your mailer, when you select the Email option for the URL type, it allows you to select a column containing the first and second names of the addressee. Thus when you click on the Email URL, it will send the names and the Email address to your mailer.

You can also set the Hyperlink Color here, and if you're working in Clarion 5.5 or later, you can select a Highlighted Color, which will be the highlight color the URL changes to as your mouse passes over it. In this case you need to set a Style Number, and if the list is a browse control, then you need to check the This List is a browse checkbox as well. This is only for ABC applications.

NB: You will need to check the style option on in your List Box Formatter window for the URL column. You cannot use this feature with cell colors as well, so you need to turn the color option off in your List Box Formatter window.

You may require to add something to the URL that is contained in the list box (like a path). You can use the Embed to Alter URL embedbutton to code the necessary changes. The variable that contains the URL that will be used is ReturnValue (which has just been returned from the GetListURL method). So if you would like to add a path to the URL, then you can just do the following:

if ~instring('\',ReturnValue,1,1)
  ReturnValue = path() & '\' & ReturnValue
end


You can enable Handcursor use for this specific column here by checking the Use Hand Cursor on this Column? checkbox. The checkbox is will be disabled if you have unchecked the Allow Hand cursor use here? checkbox on the Details tab of the local extension template.

Region Controls:

You must specify the URL to use and you can turn the IMM property on here. If you leave the IMM off, then the mouse cursor will not change as the mouse passes over the control.

Other Controls:

You must specify the URL to use.

General Options for all controls

You can also override any keycode restrictions that were set on the Options tab in the local template (by checking the No keycode restriction on this control).

Details for the HyperActive Controls associated with this window

On the Options tab:

options tab screenshot

1.1.You can specify whether you would like to use the HandCursor in this window or not (list box cursor changes are restricted to ABC based programs)
1.2.You can select the event to trigger the cursor change. If the timer event is not used, then you may prefer to use this event (which will be set to 8 - if you check the Set Windows Timer checkbox). Although this is not the most robust method, it is the quickest and easiest. If you are using WinEvent, then you can use one of the windows events to trigger the cursor change.
2.1.You can also choose to place a keycode restriction on the HyperActive controls (which can be overridden for each control).
2.2.Thus if you want the HyperActive URL to be activated only on a left click, then you can select the MouseLeft radio button.
3.If you have checked the Always check in the Registry for the Program checkbox on the Global extension template, and you don't want the registry checked here, then check the Override the setting in the.... checkbox. Otherwise if you leave it clear, the registry will be checked for valid URLs.

Extending your HyperActive Controls

Extending your Email URLs

You can easily enlarge your e-mail URLs to contain a full email message (with subject, body, etc.). You can either re-route it through a Clarion 3rdparty Email device (like one of the NetTalk objects) or use your default email server (like Outlook Express).

Included in HyperActive is a small code template to aid you in doing this (called the 'Capesoft HyperActive Construct Complete Email'). In the Code template:

prompts for HyperActiveEmail screenshot

You can fill in all the necessary details in the template variables, which will format it all and put it into the variable that you specify. Note: if you have variables in the fields above that will change, you need to ensure that this code template is in the correct place to refresh the resultant variable before the URL is called, as it will still contain previous values.

Tip: If you want to insert a line break into your Body, then you need to place the encoded characters for this there: %0D%0A. The <13,10> is not supported by all mailers.

Note: HyperActive uses ShellExecute to run your programs. ShellExecute has a limitation of 512 bytes in the parameters passed, which means that your long emails may be truncated.

The best place would be to place this in the ThisHyperActive.TakeEvent routine as follows:

embedded source: browse suppliers screenshot

This will ensure that the variable is always correct before the URL is posted to your mail program.
Alternatively, you can hand code the URL as follows:

EmailLink = EmailName & ' <<' & EmailAddress & '>' & '?subject=' & EmailSubject & '&Body=' & EmailBody

Multi-DLL Applications

HyperActive is a local class and so is not affected by whether the application is a single EXE or a Multi-DLL. You need to add the HyperActive Global Extension Template to each application that requires the use of the Local Extension Template. You don't need to add the Global Extension Template to applications that will not use the Local Extension Template.

Translating the HyperActive Messages

You need to derive the HandleError method and put the translated text you would like in there. Note: the following example code must be put before the parent call. Like the following:

      case pErrorcode
      of 32
        pError = 'The specified dynamic-link library was not found. File:|'
      of 31
        pError = 'There is no application associated with the given file name extension. File:|'
      of 30
        pError = 'The DDE transaction could not be completed because other DDE transactions were being processed.     File:|'
      of 29
        pError = 'The DDE transaction failed. File:|'
      of 28
        pError = 'The DDE transaction could not be completed because the request timed out. File:|'
      of 27
        pError = 'The file name association is incomplete or invalid. File:|'
      of 26
        pError = 'A sharing violation occurred. File:|'
      of 8
        pError = 'There was not enough memory to complete the operation. File:|'
      of 5
        pError = 'The operating system denied access to the specified file. File:|'
      of 4
        pError = 'The .exe file is invalid (non-Win32� .exe or error in .exe image). File:|'
      of 3
        pError = 'The specified path was not found. File:|'
      of 2
        pError = 'The specified file was not found. File:|'
      of 0
        pError = 'The Operating system is out of memory/resources. File:|'
      else
        pError = 'Unknown ShellExecute Error occured. File:|'
      end

The HyperActive Templates in more detail

The Global Extension Template

general tab screenshot

  1. You can globally prevent all HyperActive code from being generated by checking the Disable all HyperActive Features check box in the Debugging group.

    options tab screenshot
  2. You can set the default colors and styles for the HyperActive strings on the Options tab. These will simply be the default colors when the string control is added to the HyperActive control list in the local extension template, and won't override/set existing string control colors. It's a good idea to set these up here so that your HyperActive controls are consistent throughout your application.
  3. You can automatically ensure that your registry is searched for a program to run your URLs by checking the Always check in the registry for the Program checkbox. This is overrideable in the HyperActive local extension template.
  4. If you would like to specify a different Hand cursor (other than the default 'Hand2.cur'), then you can enter your own filename (or equate or variable containing either) in the Handcursor File/equate entry field. If you entered a filename and you would like the template to add your file to the project, then check the Add the handcursor (if it's a file) to the project checkbox, otherwise leave it unchecked.
  5. If you would like to place your HyperActive TakeEvent after the parent call of the ThisWindow.TakeEvent, then check the Handle HyperActive Events after the TakeEvent. This will mean that you can put code to change variable URLs in the TakeAccepted for buttons, etc. In some older versions of Clarion, if the TakeEvent is placed after the parent call the code won't run (sporadically).

    email options tab screenshot
  6. On the tab you can to turn on email URL encoding (check the Automatically Encode Email URLs to do this). This is useful to maintain the format of your emails (linefeeds/carriage returns), but is not supported by all mailers. Outlook Express, Outlook, Pegasus, and Eudora all support encoded mails, but Incredimail does not and the encoded characters are not filtered. Netscape does not support it, although the encoded characters are not displayed, simply filtered out.
  7. HyperActive uses ShellExecute to post URLs to the various programs. ShellExecute has a limitation of 520 characters in older OSs - Win95, Win98 & WinNT. You can force your email URLs to be clipped, or not or let HyperActive decide based on the OS. Use the options in the Handling long email URLs to select which option you would like (Clip based on the OS is the default).
  8. If you would like to use your own class (derived from the HyperActive class) then switch to the Class tab

    class tab screenshot

    and enter the name of the class in the HyperActive Class field and the Class header file name in the Class Declaration File field.

Using HyperActive with Other Templates


Using HyperActive with WebBuilder (C55 Users Only)

You can use HyperActive in WebBuilder applications from version 1.3 onwards. At present, the following controls are supported: strings, images and buttons. You can make any of these controls HyperActive in the normal way without having to alter the controls on the WebBuilder template.

If you are using images and/or buttons then you must run the HAConv.exe application (or edit the htm source yourself) that ships with HyperActive. There are some changes required in the default htm files for buttons and images.

This application is found in your c55\3rdparty\bin directory. You will need to run the changes for each button/image htm file that your application/s use. The default htm files are in the c55\bin\skeleton\default directory. Run the HAConv program and you will see menu on the menubar: 'Convert File'. This menu allows you to select either the Button or the Image file to convert. Once clicking either item, a FileDialog box will appear allowing you to select the file to convert. If the conversion has already been performed on the file, then the conversion is not attempted. You will be informed by a message box. If the file has been corrupted or some critical HTML lines have been removed/changed, then the conversion will be aborted informing you that the htm file cannot be converted.

Steps in Implementing the use of WebBuilder (assuming you have already implemented both templates in the documented fashion):
  1. In the Global Properties window of your application, click the Extensions button and highlight the Activate Capesoft's HyperActive template in the list.
  2. On the General tab, ensure that the Allow WebBuilder Support check box is checked.
  3. Click OK a couple of times to return to the Application Tree window.
  4. The WebBuilder support will now (by default) be active on all the supported controls that are HyperActive.
  5. You can disable each control individually from being supported by WebBuilder if you like. There is a check box on each supported control's HyperLink window, which you can check. By default, the check box is not checked (i.e. WebBuilder supported).
If you want to edit the html source files yourself (instead of using the HAConv program) you must do the following: In the image.htm file you need to place the following lines of html code:

<TSSCRIPT tag=a attr=href value="ImageLink">    !This goes immediately before the line: <a><img></a> in the htm file.
</TSSCRIPT>                                     !This goes immediately after the line: <a><img></a> in the htm file.

In the button.htm file you need to place the following lines of html code:

<TSSCRIPT tag=input attr=type value="ButtonType">
<TSSCRIPT tag=input attr=onClick value="onEvent">

!Find the line <TSSCRIPT omit="Icon != ''"> and then find the line after that <TSSCRIPT tag=input attr=name value="Name">. Insert these two lines immediately after this line.
</TSSCRIPT>
</TSSCRIPT>

!Insert these two lines immediately after the line <input type="SUBMIT" value="Text" name="NAME">. You will see that there are a number of lines with the same syntax located here.

Using HyperActive with FileExplorer (C55 Users Only)

You can set up HyperActive to use your File Explorer control instead of your browser. Your URL will then be opened directly in your app using File Explorer. You must have the HyperActive and the File Explorer controls on the same window, but not all of your HyperActive controls need to send their URLs to File Explorer. You may send all of your controls to File Explorer or select which ones use File Explorer and which ones use your browser.

Steps in Implementing the use of File Explorer:

Using HyperActive with XPlore

You can set up HyperActive to support XPlore features in list boxes. This pertains specifically to column order swapping at this stage. Thus when columns are swapped, then the HyperActive will "follow" the column that has been changed. Xplore does not support Styles at the moment, so the hot style effect available in C5.5 will not be available when using Xplore concurrently.

Steps in implementing the use of XPlore:

Using HyperActive with ClarioNET

HyperActive supports ClarioNET almost completely. It is very simple to add the necessary modifications to cater for the ClarioNET support. The Hyperlinks will be activated in the client, care must be taken that when links to files are activated, the files are in the correct places according to the directory specified.

As with normal applications, you can hyperlink almost any control - strings, entry controls, images, list boxes, drop combos, drop lists, etc. You can make your HyperActive controls contain weblinks, email addresses, files, etc., whereas if you use the native ClarioNET hyperlink control, you can only use a button, and the hyperlink must be to a web URL. If you are running you server out of ClarioNET mode, then the HyperActive control will still behave normally.

Steps in implementing the use of ClarioNET:
  1. Open your Global Properties window for the server application and click the Extensions button to bring up the Extension and Control Templates window.
  2. Highlight the Activate CapeSoft's HyperActive template in the list on the left and check the Enable support for ClarioNET checkbox that appears on the General tab on the right.
  3. Press OK a couple of times to get back to the application tree and save and quit your application.
  4. Load your ClarioNET Client application.
  5. Open your Global Properties window for the client application and click the Extensions button to bring up the Extension and Control Templates window.
  6. Select the ClarioNet client extension template (you must do this first, because this refreshes the template list in the IDE - otherwise you will not be able to perform the next step).
  7. Click the Insert button and select the GloHyperActiveForCN - Activate Capesoft's HyperActive for ClarioNET Client template.
  8. If this is a multi-DLL application, then you need to check the relevant settings on the Multi-DLL tab.
  9. If you are using an object derived from the HyperActive class, then you need to set the file, class and object name that you are going to use on the Class tab.
  10. Press OK a couple of times to return to the Application Tree.
Limitations when using ClarioNET:
  1. You cannot use the cursor change feature that is native to HyperActive, as ClarioNET does not support the timer event, and it does not support cursor files for cursor changes.
  2. Great care must be taken when hyperlinking to files, that those files are in the correct place on the client.
  3. In Clarion 5.5, the style feature is not supported, so the HyperLinks in a list box will not change color as the mouse goes over them.
  4. The Registry check feature is not implemented in conjunction with ClarioNET as yet.

Example

There are 2 examples in your \Clarionx\3rdParty\Examples\HyperActive directory (one for legacy and one for abc).

In Clarion 5.5 (and up) there are additional examples showing the interface between HyperActive and FileExplorer (one for legacy and one for abc) in the \Clarionx\3rdParty\Examples\HyperActive\HyperActive&FileExplorer directory, and the relationship between HyperActive and WebBuilder in the \Clarionx\3rdParty\Examples\HyperActive\HyperActive&WebBuilder directory.

You will be able to see how to select the FileExplorer control depending on the file type in the HyperActive and File Explorer example exe.

Using the HyperActive Objects

Methods

AddItem(LONG HyperControl, STRING HyperURL, <LONG NormalColor>, <LONG BrightColor>, <LONG Features>,
byte UseStdAction=0)
This method creates a queue containing each HyperActive control and it's relative details. Parameters:
HyperControl - the field ID of the control.
HyperURL - the column (in a list box) or URL string of the URL to run.
NormalColor - the normal color of the control.
BrightColor - the bright/highlighted control of the URL control
Features :- 
List Controls - the style number for the normal color. If negative, then the Handcursor will be used for this HyperActive column.
UseStdAction - for entry controls. Make Entry Controls behave like Std HyperLinks.
AddString(LONG HyperControl, STRING HyperURL, <LONG NormalColor>, <LONG BrightColor>, <LONG NormalStyle>, <LONG BrightStyle>, <LONG Reserved>)This method creates a queue containing each HyperActive control and it's relative details for strings and prompts. Parameters:
HyperControl - the field ID of the control.
HyperURL - the string of the URL to run.
NormalColor - the normal color of the control.
BrightColor - the bright/highlighted control of the URL control
NormalStyle - the style attributes of the control normally
BrightStyle - the style attributes of the control when highlighted.
Reserved - for later use.
Init(<LONG UseHandCursor>,
byte pOptions=0)
Sets up the links to the browsers, and mailers. Sets up the Event to use for the Handcursor and whether the handcursor is to be used. Initializes each of the controls using the InitControl method. Parameters:
UseHandCursor - the event to use for changing the cursor when the mouse is on the URL (lists). Omit or clear if HandCursor is not required. 
pOptions - a bit loaded flag, b0 does not perform the prop:buffer setting.
TakeListEvent()Changes the cursor to the handcursor (if required) if the control is a list and the mouse is over the URL in the list. It also changes the cell's fontstyle (for C55 and if required) to the Bright style.
Refresh(LONG HyperControl=0)Must be called after the window is resized/ moved. Calls SetControlProperties to move/resize the regions around the HyperActive controls that do not receive events (strings/prompts/images/etc) and set other changed properties. If HyperControl is passed, it just refreshes the passed control.
Run(<LONG HyperControl>,
,long limitURL=0)
Runs the URL set in the self.URLToRun property (this must be set before this method is called). It first checks whether the URL is a web or mail address. The HyperControl parameter is useful if you would like to change a URL based on the HyperActive Control. 
LimitURL - Clear for no limit, else indicate the characters to limit to, set to -1 to let HyperActive decide based on OS.
SetStyle(LONG HyperControl, LONG ListColumn, LONG ListRow,LONG Style) Does not perform anything in the parent method, but places a method for the template to generate some source locally.
TakeEvent()Handles the various events that HyperActive requires. The MouseIn and MouseOut events are used for changing styles. The Sized event is used for calling the Refresh method. The Accepted event is used for running the URL (by calling the Run method).
GetListURL(LONG HyperControl, STRING HyperURL, <STRING FirstEmailName>, <STRING LastEmailName>) ,STRINGAssemble Email URL from the columns provided. If the HyperURL parameter does not contain the '@' character, then the HyperURL is simply returned unchanged. Once assembled the form will be "FirstName LastName <URL>". If the URL is a web address, then the URL is passed as is to the Run method. This method also adjusts the URL according to which default Mailer is used. Returns the correctly formatted mail URL.
ChangeURL(LONG HyperControl, <STRING URLLink>)This method is used to change the URL of a control (not applicable for list box controls). Hypercontrol is the field USE variable, and URL is the string to change the URL to. If the URL is different from the existing one, then the Refresh (for that control) method is called automatically. If the URLLink is omitted or clear, then the URL (for the HyperControl) is cleared.
GetHTMLString(STRING StringSent, <LONG Options>, <STRING Reserved>), STRINGThis method is used to ensure that a normal web URL is correctly syntaxed. This function is used to support WebBuilder. 
StringSent is the Std URL (like 'www.capesoft.com'). 
Options determines how the URL passed is formatted. (See comments in the object source for details). The correctly syntaxed URL is returned.
ChangeColumn(LONG Control,<STRING OldColumns>,<STRING NewColumns>,<LONG Options>),LONGThis method is used to save changes to the order of the columns in a list box. This will ensure that the correct colours and hyperlinks are activated as the column orders change.Parameters:
Control - index Number of the List box
OldColumns - a group of longs containing the changed columns (if omitted, the method does an auto check based on the Header of the column to see which columns have changed)
NewColumns - a groupo f longs containing the new columns that the OldColumn group should be changed to. It is imperative that the column correct order is used for both parameters passed.
Options - reserved for later use.
Returns: 0 for no error, or else returns the errorcode (2 for failing to substitute columns).
SetControlProperties(LONG HyperControl, <LONG CreateRegion>)This method is sets the properties(e.g.. hide, disable, font, etc.) of the HyperActive controls that require them. It is advisable to use the Refresh method rather than this one. Parameters:
HyperControl - index No of the control
CreateRegion - flag to indicate whether this is initialising or just updating the settings.
SaveFormat(LONG HyperControl, <LONG FreshQueue>)This method is used to save the format of the list box. It stores the details of each column header in a queue for reference by the ChangeColumn method. Parameters:
HyperControl - index No of the control
FreshQueue - bit loaded options flag. B0 - add/update, B1 - free/Nofree
SetActive(LONG HyperControl, BYTE ActiveFlag=1)
,LONG
This method is used to set the HyperControl to an active or inactive state. Parameters:
HyperControl - index No of the control
ActiveFlag - 1 to set the control active and 0 to de-activate the URL.
Returns a 1 for success and a 0 for failed.
RegCheck(string FileName, <long options>),longThis method is used to check a URL to see if there is a program to run it in the registry. Parameters:
FileName - the name of the URL to be tested.
Options - Reserved for later use.
Returns a 1 if a registry entry exists to run that URL and a 0 for a failed registry check. The OpenProgram property contains the Program that will run the file. If the Filename contains a WebLink or an Email address, then the HyperBrowser or the HyperEmail properties will be also contain the OpenProgram property.
FormatString(string ToBeFormatted,
string Surround),string
This method is used to retrieve a string inside quotes, brackets, etc. 
Parameters:
ToBeFormatted - the string to be formatted
Surround - the encasement character(s)
Returns the string encased in the Surround characters.
HandleError(long pErrorcode,
string pError,
string pHeader)
This method is used to handle an error when running the URL.
Parameters:
pErrorcode - the errorcode of the error occurring
pError - the label of the error that occurred
pHeader - the header to display on the message.

Properties

URLStringSizeequate(4096)The global size used for URLs in this object.
ItemQtypequeue,typeA list of all the controls with hyperlinks
ControllongControl Index Number (field equate of the control)
URLstring(URLStringSize)Fixed URL for the Control
Normallong(color:none)Normal Color for list cells and strings.
Brightlong(color:none)Bright color for list cells and string.
InActiveColorlong(color:none)The color to use when a control is InActive.
Stylelong(0)Style Number (for column) for list controls
Columnlong(0)Column number of the cell containing the URL in a list control
Underlinebyte(0)Indicates whether to underline a string control or not.
UseEventlong(0)Indicates the event to trap to run the URL (by default, event:accepted).
Workinglong(0)Indicates the current row that the mouse is over in a list box
Handcursorbyte(0)Indicates whether the handcursor is required for the control or not.
NormalStylelong(0)The style attributes for a string/prompt control
BrightStylelong(0)The style attributes for a string/prompt control when highlighted.
Activebyte0)The Active byte is used to disable the URL (for e.g. if an invalid URL is applied).
UseStdActionlong(0)The keycode to use (for Entry controls) if event:accepted is not used to run the URL.
end
TrackerQtypequeue,typeA list of all the columns in a list Box - used for tracking column order changes
ControllongControl Index Number (field equate of the control)
OldFormatColstring(255)Header of the Column
ColumnNolongCurrent column Number
end
ItemQ&ItemQTypeAn instance of the ItemQType, because you can't declare queues within a class structure.
HyperBrowsercstring(256)Web browser call (now obsolete)
HyperEmailcstring(256)Email call
HandCursorlong(0)Flag to indicate (if not 0) which event must be used for the cursor change.
ListURLstring(URLStringSize)The URL that is obtained from the cell that is clicked.
Initedbyte(0)Indicates that the PreInit method has been run.
URLToRunstring(URLStringSize)This is the string used for the URL that is run. It is set in the TakeEvent method.
TrackerQ&TrackerQTypeAn instance of the TrackerQType, because you can't declare queues within a class structure.
OpenProgramcstring(256)This contains the Program that is used to run the URL. This variable is populated by the RegCheck method - for information only.
CheckURLsbyte(0)Set to auto-check URLs inside the objects (URLs checked in the Refresh method).
EncodeEmailsbyte(0)Set this to encode emails to maintain the format in the subject (linefeeds/carriagereturns). Not all mailers support encoded URLs.
LastFieldSelectedlongThe last HyperActive control that was selected/activated. For internal use.
HandCursorToUsestring(255)This property contains the filename (or equate) of the cursor to use when passing over the HyperActive controls.
LimitURLlongTo clip the length of an email URL set this property to the desired length. To use the maximum length for the OS used, set this property to -1. If 0, then no clipping is applied to the email URLs.
URLisNotAnEmaillongIf you set this property, then URLs containing the '@' character will not be treated as email URLs, but will forced to the browser.

Source Code Examples [NB for Handcoders]

ThisHyperActive.HandCursorToUse = '~hand2.cur'!Sets the cursor to use when hovering over a HyperActive control.
ThisHyperActive.Init(event:timer)!Initialises the HyperActive object and will ensure that the cursor changes on the Timer event when the mouse passes over a URL in a List box, the cursor changes to the hand cursor.
ThisHyperActive.CheckURLS = 1!Setting this property will ensure that the URLs are automatically tested (except in list boxes) before the control is made 'HyperActive'.
ThisHyperActive.AddString(?MyString1,
'www.capesoft.com',color:purple,
color:blue,FONT:Regular+FONT:Underline,
FONT:Bold)
!This adds an existing string control to the HyperActive control queue. The string control will appear in purple and underlined. When the mouse passes over it, the text will change to bold blue (no underline). The URL used when the control is clicked is 'www.capesoft.com'.
ThisHyperActive.AddItem(?MyList,2,
color:purple,color:blue,4)
!This adds a list control to the HyperActive control queue. The URL used will be in column 2 of the list. When the mouse passes over this control (Clarion 5.5 only) the text color will change from blue to purple.
Capesoftweb='www.capesoft.com'
ThisHyperActive.AddItem(?MyImage, Capesoftweb)!This adds an image control to the HyperActive control queue. The URL address that is used will be 'www.capesoft.com'. If the CapeSoft web is changed, then you need to call ThisHyperActive.ChangeURL.
case message('Use the co.za Site?', 'Question',icon:question, button:yes+button:no)!Which site would the client like to use?
of button:yes
 ThisHyperActive.ChangeURL(?MyImage,
   'www.capesoft.co.za')
!Change the URL site to the co.za site.
end
ThisHyperActive.Refresh()
In the TakeEvent method you must have a call to the HyperActive TakeEvent method as follows:

ThisHyperActive.TakeEvent()

If you have a variable registered as your URL for a particular control, like your AddItem call is:

    !It is not necessary to use the URL parameter
     !when using the text of a string control
ThisHyperActive.AddString(?MyTestString,,color:purple,color:blue,FONT:Underline)

Then you need to have a call to change the URL when the screen text changes, e.g.:

ThisHyperActive.ChangeURL(?MyTestString,?MyTestString{prop:text})
    !If you omit the URL parameter, then the URL will be cleared.

If you would like to manually check the URL, you can issue a call to the RegCheck method as follows:

if ThisHyperActive.SetActive(?MyTestString,|
      ThisHyperActive.RegCheck(?MyTestString{prop:text}))
    !This will perform the registry check and set the
    !control active at the same time

end

You must also have a call to the HyperActive Kill method (before you return from the procedure) as follows:

ThisHyperActive.Kill()

If you would simply like to run a URL at some point in your program, then you can just use the following code to do this. In this case it is not necessary for any of the above methods to be called, unless you are using an Email URL. The only code (unless in the case of the exception described) required is the following:

ThisHyperActive.UrlToRun = 'www.MyWebsite.com'
ThisHyperActive.Run()

Frequently Asked Questions

Check out general product CompilerErrors.

Email URL issues:
1.1.Can I add an attachment to my email URLs?
1.2.How can I use name data not in the list box with HyperActive's email capability?
1.3.Which Email packages does HyperActive support?
1.4.When I click on an e-mail Hyperlink in my browse/list box I get an Outlook/Outlook Express error
1.5.How do I format an email string containing 2 addresses?
1.6.How do I place a Carriage-Return/Line-feed into the body text of my mail?
1.7.The Hyperactive template seems to change the CR/LF pairs from <10,13> to %0D%0A. How do I stop this?
1.8.How can I redirect my email URLs to run another program (other than my default mailer)?
1.9.My email text is being chopped off in my mailer.
1.10.I've got an '@' in a URL that's not an email address. How do I tell HyperActive?
1.11.I've installed Office 2007, but have kept Windows Mail as my default MailClient - yet my HyperActive email URLs keep trying to open Outlook.
1.12.I get a Shell Execute Error(5) when running a email URL.
General URL issues:
2.1.How can I tell HyperActive to differentiate between valid and invalid URLs in the list box so that invalid URLs don't appear as links?
2.2.How do I alter a URL in list's column after it is clicked on?
2.3.When the highlighter moves over the browse, the web site urls are replaced with numbers.
2.4.I only want my Hyperlinks to be HyperActive if they are valid hyperlinks - can I do this?
2.5.I want to modify the URL in a List box before HyperActive runs the link. How do I do this?
2.6.I want to run a URL from source (without being linked to a control). How do I do this?
2.7.I want to modify a URL before it is run. How do I do this?
2.8.I can't get my web url to run. It keeps coming up with a Shell Execute error: The specified file was not found.
2.9.HyperActive loads the incorrect browser when I click on a weblink. What am I doing wrong?
2.10.I can't get my URL to run on a splash window.
Window Behavioral Errors:
3.1.My tool tips are inoperable when adding the HyperActive local extension template.
3.2.When I resize my window, the HyperActive controls (like the strings, etc.) are misplaced.
General:
4.1.I am using the Registry checking feature, but my string URLs are not HyperActive.
4.2.I have a region which I have made HyperActive. The URL works, but the cursor does not change as the mouse goes over the region.
4.3.I have a string control with a variable as the text (e.g. a HotField/locator on a browse). HyperActive does not work on this control.
4.4.I have a HyperActive string control on a window. When I click the control it generates an error: '(2) The specified file was not found. File s60'.
4.5.I have a legacy application and my list box URLs don't change color when I pass the cursor over them.
4.6.I would like to use another cursor other than the default 'hand2.cur'. How do I do this?
4.7.I'm cannot implement ABC Greenbarring and HyperActive styles conjointly. How do I do this?
4.8.How do I disable HyperActive at runtime?
4.9.How can I customize the "File not found" message when running an invalid URL?
1.1. Can I add an attachment to my email URLs?

Answer:
No - this is not possible (using ShellExecute - which is the technology that HyperActive uses).


1.2. How can I use name data not in the list box with HyperActive's email capability?

Answer:
You can place the following (example) code in the embed before the call to the parent.run method. This Embed will normally be the: HyperActive | ThisHyperActive | Run | 2) Before the Parent Call.

if instring('@',self.URLTORun,1,1)    !Check for email address
  if self.URLTORun[1] <> '"'          !Check that name does not exist already
!Note - You could place the Hyperactive Construct Complete Email code template
!here if you want more extensive email formatting.

    self.URLTORun = '"' & NameToUse & ' <<' & clip(self.URLTORun) & '>"'
  end
end



1.3. Which Email packages does HyperActive support?

Answer:
Outlook, Outlook Express, Netscape, IncrediMail, Pegasus and Eudora. If your mailer is incompatible with HyperActive, please contact: .


1.4. When I click on an e-mail Hyperlink in my browse/list box I get the following Outlook/Outlook Express error:
"The command line argument is not valid. Verify the switch you are using".

Answer 1: Your Email package is not set-up to receive standard parameters. Go to your HyperActive Global Extension and on the Email Options tab, check the Automatically Encode Email URLs checkbox.

- OR -


Answer 2: Your Email package is not set-up to receive the standard Outlook and Outlook Express parameters. When you check the "URL is Email" check box in the list box's HyperActive properties, the URL will attach the data in the column(s) specified in the Mail Name fields as the addressee's name. Thus, the addressee's name will appear in the 'To:' field instead of the e-mail address. If you uncheck the "URL is Email" check box in the list box's HyperActive properties the problem will disappear, but the addressee's e-mail address will appear in the 'To:' field (instead of their name).


1.5. How do I format an email string containing 2 addresses?

Answer: You need to insert the comma ',' and space ' ' characters between each address.


1.6. How do I place a Carriage-Return/Line-feed into the body text of my mail?

Answer: Encode them.


1.7. The Hyperactive template seems to change the CR/LF pairs from <10,13> to %0D%0A in my email text. How do I stop this?

Answer: You can turn email encoding off on the Global Extension Template. Most email clients don't require their mail to be encoded, but some do. By default encoding is turned on - if you turn encoding off, then some email clients will not support your messages.


1.8. How can I redirect my email URLs to run another program (other than my default mailer)?

Answer: In your procedure (with the HyperActive Local Extension template), go to the embeds, and find the ThisHyperActive | Run | Before the Parent Call embed and place the following code:

if instring('@',self.URLToRun,1,1)
  RunMyownMailer()
else


In your procedure (with the HyperActive Local Extension template), go to the embeds, and find the ThisHyperActive | Run |�After the Parent Call embed and place the following code:

end


1.9. My email text is being chopped off in my mailer.

Answer: Some mailers (like Eudora) chop text off after an & or ? character. Even if you encode these characters, the mailer will still chop the rest of the text off. Change the & character in your text to 'and' and the ? to some other character.


1.10. I've got an '@' in a URL that's not an email address. How do I tell HyperActive?

Answer: You need to set the URLIsNotAnEmail property before the HyperActive.Run parent command is called. You can either do this in the derived ThisHyperActive.run method (before the parent call), or else in your code after setting the URL. This property is not cleared in the HyperActive classes at all, so you can set it once for the whole procedure (if all your URLs are not email URLs). Otherwise you need to clear it after the parent.run method in the derived ThisHyperActive.run class to avoid your true email URLs being classified as false email URLs.


1.11. I've installed Office 2007, but have kept Windows Mail as my default MailClient - yet my HyperActive email URLs keep trying to open Outlook.

Answer: Windows Mail does not set itself correctly as the default mail client. If you try any mailto URL from other programs (like your browser) - then it will behave in the same manner - i.e. attempt to use Outlook as the default mail client rather than Windows Mail.


1.12. I get a Shell Execute Error(5) when running a email URL.

Answer: You're probably exceeding the limit of the maximum number of characters for an email URL (see http://blogs.msdn.com/oldnewthing/archive/2003/12/10/56028.aspx for details). If you have 'Automatically Encode Email URLs' (a checkbox in the HyperActive global extension template) checked, then your email URLs are being bloated with the encoded characters, so if this is not required, you can turn this off to reduce the number of characters used in an email URL.


2.1. How can I tell HyperActive to differentiate between valid and invalid URLs in the list box so that invalid URLs don't appear as links?

Answer:
You can place the following (Example) code in the HyperActive | ThisHyperActive | Run | 2) Before the Parent Call embed. (This is so that the links don't run)

if self.RegCheck(self.URLTORun)
  parent.Run (HyperControl)
else

  !Don't run the URL if it is not an Email.
end
exit


Then place the following (example) code in the HyperActive | ThisHyperActive.Refresh | After the Parent Call embed. (This is so that the cells don't appear as HyperLinks)

!This code goes through the queue finding any invalid URLs and resets the style to 1.
loop X# = 1 to records(Queue:Browse:1)
  Get(Queue:Browse:1,X#)
  if ~self.RegCheck(Queue:Browse:1.sup:EmailAddress)
    Queue:Browse:1.sup:EmailAddress_Style = 1
    put(Queue:Browse:1)
  end
end



2.2. How do I alter a URL in list's column after it is clicked on?

Answer: There is an EMBED point which you can access via the Local Extension Template, where you can code the necessary changes.

For example, if you wanted to add a subject to an Email URL, you could place the following code in this embed:
ReturnValue = clip(ReturnValue) & '?subject=My subject'


2.3. When the highlighter moves over the browse, the web site urls are replaced with numbers.

Answer: It looks like the Column has STYLE ticked on? (this is checkbox in the HyperActive Local Extension Template), but you do not have the Style attribute for the list ticked on. ;
  1. Open the window formatter window and right click on the list.
  2. Select the List box format... from the menu that appears.
  3. In the List box formatter, highlight the HyperActive field. and make sure that the Style is checked.

If this is a handcoded (not a template driven) list box, then you'll need to add a LONG variable to your queue (that is displayed in the list) as follows:

MyListQueue                queue
MyURL                         string(255)
MyURLStyle                    long                !Add this variable
                           end



2.4. I only want my Hyperlinks to be HyperActive if they are valid hyperlinks - can I do this?

Answer: You can automatically ensure that your registry is searched for a program to run your URLs by checking the Always check in the registry for the Program checkbox in the Global Extension Template. This is overrideable in the HyperActive local extension template.


2.5. I want to modify the URL in a List box before HyperActive runs the link. How do I do this?

Answer: ThisHyperActive.GetListURL is the method where you can put your code. The code that the template puts there is (for example):

    if (HyperControl = ?Browse:1)
      Get(Queue:Browse:1,choice(?Browse:1))
      HATempVar = ?Browse:1{proplist:mouseupfield}
      case ?Browse:1{proplist:FieldNo,HATempVar}
      of where(Queue:Browse:1,Queue:Browse:1.sup:WEBSITE)
        ReturnValue =
parent.GetListURL(HyperControl,Queue:Browse:1.sup:WEBSITE)
      end
    end

You can put your own code before the template generated code. Return directly from your code with the changed link.

For example:

    if (HyperControl = ?Browse:1)
      Get(Queue:Browse:1,choice(?Browse:1))
      HATempVar = ?Browse:1{proplist:mouseupfield}
      case ?Browse:1{proplist:FieldNo,HATempVar}
      of where(Queue:Browse:1,Queue:Browse:1.sup:WEBNAME)
        Return (parent.GetListURL(HyperControl,Queue:Browse:1.sup:WEBSITE))
      end
    end


2.6. I want to run a URL from source (without being linked to a control). How do I do this?

Answer: Simply code the following where you want to run the URL:

      ThisHyperActive.URLToRun = MyURL
      ThisHyperActive.Run()


2.7. I want to modify a URL before it is run. How do I do this?

Answer:

You can replace (or modify) the URL that is run by putting the following code (for example) in the �ThisHyperActive.Run� embed �before the parent call�.

If Clip(PROLIN:LINK) <> ''     !If my URL string is not empty
     Case HyperControl
     Of ?PROLIN:Description   
!If it is the right entry control
        Self.URLTORun = PROLIN:LINK     
!Change URL string
     End
End


2.8. I can't get my web url to run. It keeps coming up with a Shell Execute error: The specified file was not found.

Answer: You're probably using a non-standard web URL like support.capesoft.com. You should always use the correct syntax http:// as a prefix to your web URLs. HyperActive will recognise www. as a web URL (without the http:// prefix) - but with non-standard URLs you need to specify the Http:// - otherwise it thinks that the URL is a file.


2.9. HyperActive loads the incorrect browser when I click on a weblink. What am I doing wrong?

Answer: The place to check is your Windows Registry to make sure that your browser has been registered correctly.
  1. Run Regedit (Windows-R, and type in Regedit and hit enter).
  2. In the HKEY_CLASSES_ROOT\.htm section you'll find a default value (for FireFox it'll be FirefoxHTML) - we'll call this the <webbrowserdefaultname>.
  3. Find the HKEY_CLASSES_ROOT\<webbrowserdefaultname>\shell\open\command (for FireFox: HKEY_CLASSES_ROOT\FirefoxHTML\shell\open\command). The default value should point to the name of your browser's exe. For FireFox this will be: C:\PROGRA~1\MOZILL~1\FIREFOX.EXE -url "%1" -requestPending


2.10. I can't get my URL to run on a splash window.

Answer: Splash windows don't take events, so you can't put a HyperActive control on a splash procedure, as hyperActive needs events to activate the links.


3.1. My tool tips are inoperable when adding the HyperActive local extension template.

Answer: You need to add controls to the HyperActive controls list. If don't require HyperActive controls on this window, then delete the HyperActive local extension template.


3.2. When I resize my window, the HyperActive controls (like the strings,etc .) are misplaced. What must I do?

Answer: Some third party tools interfere with HyperActive's repositioning of the regions underneath the passive controls (strings, prompts, images, etc). You need to place the following line of code after other resizing has taken place:

ThisHyperActive.Refresh()


4.1. I am using the Registry checking feature, but my string URLs are not HyperActive.

Answer:
You are probably using a variable for your URL. You need to check the 'Refresh the URL in the TakeEvent?' checkbox on the HyperActive local extension template details for that control, or place a call to the ChangeURL method when the URL must be changed (see Source Code Examples for details).


4.2. I have a region which I have made HyperActive. The URL works, but the cursor does not change as the mouse goes over the region.

Answer: You need to set the IMM property of the region control. You can do this in your Window Formatter window or in the HyperActive Extension entry for that control (see details).


4.3. I have a string control with a variable as the text (e.g. a HotField/locator on a browse). HyperActive does not work on this control. I can't click on the control, the cursor does not change and the string's font is the same. What must I do?

Answer: HyperActive creates a region 'under' controls that don't receive events like string controls, prompts, images, etc. When the string control is created, it initially has a size 0 (unless you fixed the size in the string controls position properties), thus the region will also be of size 0. If you have a hotfield associated with a list, then you can simply check the 'Refresh the variable URL in the TakeEvent' check box on the string control's entry in the HyperActive local extension template. Alternatively, when the string's text property changes, you need to place a call in your code for the method 'ThisHyperActive.ChangeURL'. This will ensure that the size of region created around the control is the same as the control's. NB: You must also set the width of the string to default (this will ensure that the control's width is the same size as the string text).


4.4. I have a HyperActive string control on a window. When I click the control it generates an error: ?(2) The specified file was not found. File s60?. What am I doing wrong?

Answer: This probably means that you have not filled the correct information into the URL on the local extension template for that string control. You need to enter the variable or constant to inform HyperActive of the URL that must be run.

Check the Clarion docs on FORMAT and the use of the style attribute (specifically).


4.5. I have a legacy application and my list box URLs don't change color when I pass the cursor over them.

Answer: The styling in lost boxes is only available in ABC applications.

4.6. I would like to use another cursor other than the default 'hand2.cur'. How do I do this?

Answer: You can set a different default cursor in the Global Extension Template - which will force your cursor to be used throughout your application (instead of the default hand2.cur).


4.7. I'm cannot implement ABC Greenbarring and HyperActive styles conjointly. How do I do this?

Answer: Basically you need to override the code that the ABC greenbarring template puts into the source module in 2 places. If you go into your embeditor and find the BRWx.Fetch method you will find something like the following template generated code after the parent call:

LOOP GreenBarIndex=1 TO RECORDS(SELF.Q)
GET(SELF.Q,GreenBarIndex)
SELF.Q.sup:Name_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - 
SELF.Q.sup:WEBSITE_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - 
SELF.Q.sup:EmailAddress_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - 
SELF.Q.sup:Phone_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - 
SELF.Q.sup:MirrorWebsite_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - 
PUT(SELF.Q)
END


Between this and the parent call, enter the following:

LOOP GreenBarIndex=1 TO RECORDS(SELF.Q)
GET(SELF.Q,GreenBarIndex)
SELF.Q.sup:Name_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - 
!SELF.Q.sup:WEBSITE_Style = CHOOSE(GreenBarIndex % 2,1,2) ! -       HyperActive Style overrides this style
!SELF.Q.sup:EmailAddress_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - HyperActive Style overrides this style
SELF.Q.sup:Phone_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - 
!SELF.Q.sup:MirrorWebsite_Style = CHOOSE(GreenBarIndex % 2,1,2) ! - HyperActive Style overrides this style
PUT(SELF.Q)
END
return

Similarly, If you go into your embeditor and find the BRWx.SetQueueRecord method you will find something like the following template generated code after the parent call:

!----------------------------------------------------------------------
SELF.Q.sup:Name_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! - 
SELF.Q.sup:WEBSITE_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! - 
SELF.Q.sup:EmailAddress_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! - 
SELF.Q.sup:Phone_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! - 
SELF.Q.sup:MirrorWebsite_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! - 
!----------------------------------------------------------------------


Between this and the parent call, enter the following:

SELF.Q.sup:Name_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! - 
!SELF.Q.sup:WEBSITE_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! -
!SELF.Q.sup:EmailAddress_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! -
SELF.Q.sup:Phone_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! - 
!SELF.Q.sup:MirrorWebsite_Style = CHOOSE(CHOICE(?Browse:1) % 2,1,2) ! -
return


In your HyperActive template, you need to make sure that you have set the Style number (that each control is set to use) >= 3 as the ABC greenbarring uses styles 1 and 2 (and these are not presetable).


4.8. How do I disable HyperActive at runtime?

Answer: Anywhere in your procedure you can set the disable property to immediately disable HyperActive functionality for that procedure:

ThisHyperActive.Disable = 1


4.9. How can I customize the "File not found" message when running an invalid URL?

Answer: You can override the HandleError method in the derived HyperActive class. If you open the procedure (containing the HyperActive class), in the Embeditor (Source), do a search for the '.HandleError ' phrase (exclude quotes) and insert the following (before the parent call):

Showing HandleErrors derived code before the parent call

What the Users are saying about HyperActive

Nardus Swanevelder (in a Clarionshop review - 20 January 2003):
Adding HyperLinks to your app has never been this easy.

Greg Fasolt (in a Clarionshop review - 20 January 2003):
A real timesaver and the support couldn't be better.

Mark Segnari (in a return email - June 12, 2002):
Long story short, it's one of the easiest templates to implement! I had a help/about screen up and running with web access and e-mail in about 10 minutes. In another 15 minutes I had a small data entry screen finished for a user to compose an e-mail message! Very easy, very quick, and makes everyone perk up when you mention e-mail or internet! .... is much more robust than I ever expected! Keep up the great work!

John Martin (in a return email - April 2, 2002):
Fantastic! Thank you, .... I have found your product to be very reliable and easy to use. Thank you again.

Darron Pitman (in a return email - February 12, 2002):
Excellent thank you......Really looks the biz.....

James Cooke (a support email - December 26, 2001):

I enjoy this product, thanks and well done.

License & Copyright

This template is copyright © 2017 by CapeSoft Software. None of the included files may be distributed. Your programs which use HyperActive can be distributed without any HyperActive royalties.

This product is provided as-is. Use it entirely at your own risk. Use of this product implies your acceptance of this, along with the recognition of copyright stated above. In no way will CapeSoft Software, their employees or affiliates be liable in any way for any damages or business losses you may incur as a direct or indirect result of using this product.

Source Code Policy

We have chosen to ship HyperActive as source code, rather than as a compiled DLL. This makes it much easier for you to modify, but it also makes it much easier for you to pirate. We ask you to please consider the effort involved in writing this product, before you choose to hand it on to any other developers.

If you received this program illegally (i.e. if you didn't pay for it, or you didn't buy it from CapeSoft, ClarionShop, or one of their respective dealers) then we ask you to contact us so that we can remedy this situation. Without the revenue generated from products such as this it is impossible for us to create new products.
This next bit is optional - and is included for the benefit of programmers wishing to inspect, or alter, the HyperActive object.

We welcome any suggestions from users regarding new features that might be added to HyperActive.

Support

Your questions, comments and suggestions are welcome. Check our web page (www.capesoft.com/accessories/downloads.htm) for new versions. You can also contact us in one of the following ways.
CapeSoft Support
Email
Telephone +27 21 715 4000
Fax +27 21 715 2535
Post PO Box 511, Plumstead, 7801, Cape Town, South Africa

HyperActive may be purchased from :

CapeSoft Sales
Web www.capesoft.com
Email sales at capesoft dot com
Telephone +27 21 715 4000
Fax +27 21 715 2535
Post PO Box 511, Plumstead, 7801, Cape Town, South Africa

Buy Online
Web Buy now at ClarionShop
www.clarionshop.com

Version History

Download latest version here

Ver 2.22: Released 19 Jan 2017

Ver 2.21: Released 13 October 2015
Ver 2.20: Released 25 February 2015 Ver 2.19: Released 24 November 2014 Ver 2.18: Released 3 November 2014 Ver 2.17: Released 11 July 2014 Ver 2.16: Released 31 January 2014 Ver 2.15: Released 11 October 2013
Ver 2.14: Released 7 October 2013
Ver 2.12: Released April 30, 2013
  • Changed to Ver4 object/template management system. IMPORTANT READ THIS.
  • Add: support for Multi-Proj in C8
Ver 2.11: Released March 14, 2013
  • Changed to Ver4 object/template management system. IMPORTANT READ THIS.
  • Add: support for Multi-Proj in C8
Ver 2.10: Released January 24, 2013
  • Clarion 8 support for Multi-Proj (adds the Hyper.clw file to the compiled files).
Ver 2.09: Released August 10, 2011
  • New property: ThisExeToRun. Specifies the exe to run the URL.
Ver 2.08: Released January 29, 2010
  • Fix for template regression introduced in 2.07.
Ver 2.07: Released January 28, 2010
  • Fix for clarion 7.1 (not displaying blue links) - template uses %cwversion rather than %cwtemplateversion.
Ver 2.06: Released January 4, 2010
  • Forces the Run method to call ShellExecute with the Open attribute.
Ver 2.05: Released January 26, 2008
  • Includes the HyperActive object header file once.
Ver 2.04: Released November 24, 2008
  • Tweaks for Clarion 7 support in the template.
Ver 2.03: Released November 10, 2008
  • Clarion 7 compatible install.
  • Change entry fields in the mail code template to EXPRs.
Ver 2.02: Released August 20, 2007
  • Feature - new property. URLisNotAnEmail property allows you to force a URL to point to an email if it does not contain the @ character.
  • Feature - new property. Disable property allows HyperActive to be disabled at runtime (locally for each instance of the class).
  • Feature - Cursor is changed over the icon in the column of a list that is HyperActive.
  • Fix - link local extension template to the template chain (as well as the Global extension template).
  • Fix - make HyperActive embeds start at the first position (on the left).
Ver 2.01: Released November 10, 2006
  • Workaround - for Hyperlinks in Column 1 of a list box (when right-clicking on a browse an accepted event is posted to the browse with MouseUpField set to 1)
  • Fix - if a Skype field is blank, then don't perform the Skype functionality.
Ver 2.00: Released June 7, 2006
  • Fix - for SkypeAddress link URL (in list box URL types).
  • Fix - for spurious %EmailOrWeb template error.
Ver 1.97: Released June 7, 2006
  • Feature - supports SkypeAddress link URL.
  • Fix - was selecting the incorrect details for web URLs in list boxes with multiple webURL columns.
Ver 1.96: Released October 27, 2005
  • Feature - allow prop:buffer suppression in the Global Extension template.
  • Clarified docs FAQ for Outlook error.
Ver 1.95: Released July 18, 2005
  • Fix regression introduced in 1.94 - was opening Internet Explorer for all URLs.
Ver 1.94: Released July 13, 2005
  • Opens a new window in Internet Explorer when the URL is activated.
Ver 1.93: Released 24 January, 2005
  • Class fix - if @ exists in a webURL, then don't try and open the mailer.
  • Includes copyright include.
Ver 1.92: Released 10 December, 2004
  • Template Fix - Make compatible with new FileExplorer release.
Ver 1.91: Released 27 October, 2004
  • Template Change - New template look.
  • Template Change - Setup global defaults correctly.
Ver 1.90: Released 7 September, 2004
  • Template Change - Support for Multi-Proj (when a cursor is used) fixed.
  • Template Change - Improved legacy browse field handling.
Ver 1.89: Released 17 August, 2004
  • Template Change - Procedurename display for C6 as well as C55.
  • Template Fix - clipped heading to allow for Proc and Exe name to fit into heading text.
  • Template Fix - removed unrequired ALIAS to a FileExplorer template variable.
  • Class workaround - in C6 - proplist:mouseupfield was not being read correctly.
Ver 1.88: Released 31 May, 2004
  • Template Change - Added the Ability to Move the call to the HyperActive.TakeEvent after the ThisWindow.TakeEvent.
  • Template Change - Allow equates to be used for the HyperActive cursor (not only a file).
  • Template Change - Don't allow RegCheck if this is a ClarioNet or WebBuilder application.
Ver 1.87: Released 23 April, 2004
  • Object & Template change - fix for ClarioNet support (bug introduced in 1.80 - prop:buffer in Init method).
Ver 1.86: Released 13 April, 2004
  • Object & Template change - allows a different cursor to be used (for HyperActive controls).
Ver 1.85: Released 9 March, 2004
  • Object & Template change - supports the cursor in legacy list boxes.
Ver 1.84: Released 15 January, 2004
  • Object Change - removed "s from encoded emails (causing grief with Outlook). Tested OK with OutlookExpress, Netscape and Outlook.
Ver 1.83: Released 15 December, 2003
  • Object Change - Save InActive color of Entry controls for use if control is inactive.
  • Object Fix - Change UseStdAction to a long (was byte) - Event for use was not being stored correctly.
  • Object Change (New HandleError method) - Allows user control of error messages (called instead of direct use of MESSAGE()).
  • Object Change - Use OutputDebugString for debugging.
  • Object Fix - Clear UseStdAction between control additions.
  • Object Fix (refresh and TakeEvent methods) - Do active check on entry controls.
  • Object Fix (TakeEvent method) - select only for StdHyperlink mode for entry controls.
  • Object Fix (SetControlProperties method) - allow resetting of FONT attributes to combo, text and entry controls (dependent on whether they are active or not).
  • Template Fix - add class file correctly to the project (Multi-DLL apps).
Ver 1.82: Released 18 September, 2003
  • Object Change - made module data properties - ensures that HyperActive is thread safe for Clarion6.
  • Object & Template Change - allows a HyperActive entry control to behave as an Outlook hyperlinked entry control.
Ver 1.80: Released 1 September, 2003
  • Object Change (AddItem) - allows Entry controls to behave as normal HyperLinks - although this
  • Object Change (Init) - set prop:buffer. This stops image flickering, when the cursor crosses the image.
  • Object Change (TakeEvent) - for List URLs - use the string returned by GetListURL, instead of the property (ListURL - obsolete).
  • Template Change - EmbedButton (on the Local Extension Template) when making a List HyperActive, to enable you to change the URL (add or use a different column's contents).
  • Template Change - Make #at commands into groups - makes template code more legible.
  • Template Fix - ReturnValue declaration is generated correctly.
  • Template Change - Generate all procedures as PROCEDUREs (instead of the legacy FUNCTION)
  • Template Change - Changed description of the GetListURL embed.
Ver 1.7i: Released 10 April, 2003
  • Object Change (AddItem) - allows Entry controls to behave as normal HyperLinks - although this can be confusing as the left click is used to select an entry as well.
  • Object & Template Change (Run) - only limits Email URLs if required. Can detect the OS and limit based on OS.
  • Object Change (ChangeColumn) - Changed parameter label from Control to HyperControl. Was causing duplicate errors (where control is already used).
  • Template Fix - corrected FileExplorer object calls - if you get compile errors, you need to upgrade your FileExplorer to the latest version.
Ver 1.7g: Released 21 January, 2003
  • Template change - support for Clarion6.
  • Object Change - correctly prototyped 16bit windows functions.
  • Object Change - used variables instead of control properties (specifically prop:pos) for comparing mouse location. (Problem occurs in Clarion6 and Clarion4)
Ver 1.7f: Released 2 December, 2002
  • Object & Template Change - allows encoding of email subjects. Note: Not all mailers support encoding, so this feature is (by default) off.
Ver 1.7e: Released 18 November, 2002
  • Object Change - limited email URLs to 520 chars (ShellExecute limitation), includes the Program run command.
  • Object Change - Email URL called directly with the mailto:, not the the program name.
  • Example update - includes newer features (Make Email, etc.)
Ver 1.7d: Released 14 November, 2002
  • Template Change - supports Multi-Proj
  • Object Change - only adds mailto: if mailto: is not in URL (for Emails)
  • Object Fix - fixed the way mail URLs were passed to their mailers. Now supports IncrediMail and Pegasus.
  • New method - FormatString (used in the Run method for retrieving the mailer command and the mailer parameters)
  • Template Change - added clipping to the email code template (if strings are used instead of cstrings)
  • Template Change - removed WinEvent option from the Cursor change option.
Version 1.7c: Released 12 September, 2002
  • Object fix - Sets HyperActive region control properties correctly.
  • Object change - Setcursor() calls omitted, so only prop:cursor is used.
  • Object Change - Only Hand2.cur is used, not hand.cur as well.
  • Template & Object - Included debugging tool for HyperLinks (new method - debug)
  • Template change - made template image an 8/3 filename.
  • Template Change - supports c5.5f regression (%cwtemplateversion template symbol)
Version 1.7b: Released 28 June, 2002
  • Object Fix - catered for NT bug. Different method of determining if no mailer registered.
Version 1.7a: Released 24 June, 2002
  • Template & Object Fix - Before calling parent.Run, change the string URL to prop:screentext, not prop:text (for strings that use the screentext as the URL).
  • Object Fix - Do fontcolor changes in SetControlProperties only (fixed flickering) (Takeevent, SetcontrolProperties changed)
  • Object Fix - Only set the created region's position after the string's font properties have been set.
  • Template & Object Change - Set the timer from the template (if required) rather than from the object.
Version 1.7: Released 6 June, 2002
  • Object Change - Clears Browser/Email properties if no Browser/Mailer.
  • Object Change - New property (in the ItemQ) to activate/deactivate items in the queue.
  • Object Change - Display()s refreshed item (when refresh is called for a specific control).
  • Object Change - Perform a registry check (new method - RegCheck) if there is program to run the URL (performed in refresh if self.CheckURL property is set) - Note: Not available for ClarioNET and WebBuilder programs (as yet).
  • Object Change - sets the style in the refresh method.
  • Object Change - refreshes all controls when an event:accepted is received on a list. (caters for Hotfields)
  • Object Change - in ChangeURL, only performs URL change if the URL has changed (optimized)
  • Object Change - setcursor in the SetControlProperties method
  • TPL Change - Globally set an Option to perform registry check automatically (overrideable in the local template).
  • TPL Change - Option to refresh variable hyperlinked strings in the TakeEvent method.
  • Object Change - New method - SetActive - activates/de-activates a HyperActive control.
  • TPL Change - Moved Init stuff to LAST on the AfterOpeningWindow embed point (for MessageBox compatibility).
Version 1.6a: Released May 10, 2002
  • TPL Change - Code template to simplify construction of an email hyperlink (with subject and body)
Version 1.6: Released April 2, 2002.
  • TPL Change - Allows ClarioNET support in server apps and a new template created for ClarioNET client apps.
  • TPL Change - tidied up the enabling for various product support.
Version 1.5: Released February 22, 2002.
  • TPL & Object Change - Allows style changes for strings. Setable in the Local Template with defaults in the Global Template. New AddStrings method.
  • Object Change - Fixed 'shimmering' on string controls when no mouse cursor changes used.
  • TPL Change - Removed %HandCursor error that appears when adding template to XPlore supported apps.
Version 1.4: Released January 10, 2002.
  • Object & TPL Change - Allows individual columns to turn off the HandCursor.
  • TPL change - Allows you to disable the Handcursor for the entire procedure.
  • Object Change - Allows you to change the column order of lists (XPlore support - partially completed, does not support styles at this stage - awaiting XPlore update) (ChangeColumn method).
  • Obj & Tpl change - Colors' setting for entry and combo in tpl and object
  • Obj & Tpl change - Allows different event to trigger an entry control's URL (new UseEvent property)
  • Object Change - workaround for Netscape (v4.79)
  • Object change - workaround for C4 bug- not setting strings fontcolor initially.
  • Object change - won't run Blank URLs.
  • Object & TPL Change - Allows restriction by keycode for Hyperlinks. Individual controls can have the restriction disabled.
  • Object & TPL Change - moved hot field refreshing from the TPL to the object.
  • Object Change - disabled font set correctly, also if a group is enabled, then controls within group match disabled status.
Version 1.3: Released October 18, 2001.
  • Object & TPL change - supports hyperlinks in WebBuilder (strings, buttons and icons). Buttons and icons require htm source change of the default htm source.
  • Object Change - supports Emailing in NT4 (32 bit only).
Version 1.2: Released September 19, 2001.
  • Object change - supports Emailing in Win2K. Was using the run command for emailing, now uses the ShellExecute command.
  • Template Change - Added support for FileExplorer's Media Control template.
  • Object Change - supports Emailing using OutLook (from Browses). Parameter passing is different in Outlook to Outlook Express.
  • Object Change - When 'URL is Email' is off in a HyperActive Browse and Email sent, simply passes address on to Run. This makes Emailing from the Browse more generic.
  • Object Change - Fixed a browse's associated HotField string colouring and underlining.
  • Template and Object Change - Allows you to set default colors from your Global Extension template for your new HyperActive strings. This will not override existing colors. You can also set the normal color of the individual HyperActive string from the local extension template.
Version 1.1: Released August 17, 2001.
  • Template Change - 'This List has an associated string control' check box added to the List control entry in the HyperActive Local Extension Template. This automatically refreshes HyperActive string controls that are HotFields to the list.
  • Object Change - Fixed missed size refreshing of HyperActive created regions when the window is resized.
Version 1.0 Gold: Released August 6, 2001.
  • Template Change - Allows you to automatically set the IMM property of a region in the template.
  • Template bug fix - Allows you to disable HyperActive code from being generated into a procedure if you check the "No HyperActive code here" check box. Similarly for the No HyperActive Code switch in the Global Extension Template, which prevents all HyperActive code from being generated throughout your entire application.
Version 1.0 beta 2: Released July 16, 2001.
  • Object Change - work around for Clarion Bug. MouseIn and MouseOut events not always received (like if a window loses focus). Affects cursor changes and string color changes.
  • Template Change - Object procedure embeds changed to after procedure routines. Solved 'routine not defined' errors when using ezHelp and other products with local procedure routines.
  • Object Change - sorts HyperControl Q before getting (in the AddItem). Resolves Clarion4 issue where get was not finding the queue entry - sometimes not underlining strings.
  • Object Change - sorts HyperControl Q before getting (in the TakeEvent). Resolves Clarion4 issue where get was not finding the queue entry for running URLs (occasional).
  • Doc change - FAQ added.
  • Examples Updated.
Version 1.0 beta 1: Released July 10, 2001