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
    
      
        - One Click Hyperlink Controls - Make any
          existing control on your window a Hyperlink to a web page/file/e-mail
          address.
- Hyperlinks in a List Box - Make a column
          in your list/browse HyperActive to link to your browser/mailer.
- File Explorer compatible - Make the
          HyperActive controls send their URLs to your CapeSoft File Explorer
          OLE control.
- Color Highlights - Make your HyperActive
          string and/or listbox control fields change color as the mouse passes
          over the HyperLink.
- Mouse Cursor changes - Make your mouse
          cursor fields change to the hand cursor as the mouse passes over the
          HyperLink.
- Supports all file types - 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.
- Easy email creation - HyperActive comes
          with a small code template that make it easy for you to create a full
          email (supports Outlook Express, Outlook and Netscape) when your user
          clicks the HyperActive control.
- Supports ClarioNet and WebBuilder.
- Makes handcoding simple - whether you're
          an avid handcoder - or not, the HyperActive object's methods and
          properties are very easy to code in.
- Registry checks - HyperActive can check
          the registry to make sure that there is a registered to run your
          HyperActive control's URL before making it 'Hyper'Active.
 
    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.
      
        -  Open your application and from the application window click the Global button. 
 
-  In the Global Properties window click the Extensions
          button. 
 
- In the Extension and Control Templates window click the Insert
          button and select the Activate CapeSoft's
            HyperActive template from the list that appears 
 
- You can read more about the Global
            Extension Template options further down - but lets leave the
          defaults as is for the moment. 
 
-  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.
      
        -  From the application window, open the Procedure Properties window
          for that procedure. 
 
-  Click the Extensions button on the Procedure Properties Window. 
 
-  Click Insert and select Capesoft
          HyperActive Control from the Class HyperActive. 
 
-  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. 
 
-  To customise some of the HyperActive features, you set these on the
          Options Tab. 
 
-  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:
       
      
      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:
       
      
      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:
      
        - You can specify an Event for the URL in which case it will use the
          specified event instead of the EVENT:ACCEPTED
          event.
- 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.
- 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:
       
      
      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:
      
      
 
      
      
        
          
            | 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:
      
      
 
      
      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: 
      
      
 
      
      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
       
      
      
        -  You can globally prevent all HyperActive code from being generated
          by checking the Disable all HyperActive Features
          check box in the Debugging group.
 
  
 
-  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. 
 
-  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.
 
-  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.
 
-  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).
 
  
 
-  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.
 
-  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). 
 
-  If you would like to use your own class (derived from the
          HyperActive class) then switch to the Class
          tab
 
  
 
 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):
      
        -  In the Global Properties window of your
          application, click the Extensions button
          and highlight the Activate Capesoft's HyperActive
          template in the list. 
 
-  On the General tab, ensure that the Allow
            WebBuilder Support check box is checked. 
 
-  Click OK a couple of times to return to the Application Tree
          window. 
 
-  The WebBuilder support will now (by default) be active on all the
          supported controls that are HyperActive. 
 
-  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">    
      </TSSCRIPT>                                    
      
      
      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">
      <TSSCRIPT
        omit="Icon != ''"><TSSCRIPT tag=input
        attr=name value="Name">
        </TSSCRIPT>
        </TSSCRIPT>
      <input type="SUBMIT" value="Text"
        name="NAME">
      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:
      
        -  Open your Procedure Properties Window
          for the procedure which has the File Explorer Document Viewer Control
          Template and the HyperActive Extension template populated. 
 
-  Click on the Extensions button and
          highlight the CapeSoft HyperActive Controls
          local extension template in the Extension and
            Control Templates window that appears. 
 
-  Click on the Other Products Support tab.
          
 
  
 
 
-  Check the Enable FileExplorer support
          check box. 
 
-  Select the File Explorer OLE control from the drop list. You must
          have already added the File Explorer Document Viewer Control template
          to this window or there will be no controls in the drop list. 
 
-  You can either check the All HyperActive
            controls to use FE, in which case all the HyperActive
          controls will use the File Explorer OLE to browse the document, or you
          can leave this unchecked and activate each control that you require to
          use the File Explorer OLE to send the URL. 
 
-  If you would like to activate individual controls, then go back to
          the HyperLinks tab and select the controls
          (one at a time) and click on the Properties
          button. In the HyperLinks window that appears, you will notice the
          File Explorer support for this control group with a check box in it.
          Check this check box (This Control uses FE)
          in order to force this control to use File Explorer only.
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:
      
        
          -  Open your Procedure Properties window
            for the procedure which has the Xplore template and the HyperActive
            Extension template populated. 
 
-  Click on the Extensions button and
            highlight the Capesoft HyperActive Controls
            local extension template in the Extension and
              Control Templates window that appears. 
 
-  Click on the Other Products Support
            tab. 
 
-  Check the Enable XPlore support check
            box. 
 
-  Nothing else is necessary.
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:
      
        -  Open your Global Properties window for
          the server application and click the Extensions
          button to bring up the Extension and Control
            Templates window. 
 
-  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. 
 
-  Press OK a couple of times to get back to the application tree and
          save and quit your application. 
 
-  Load your ClarioNET Client application. 
 
-  Open your Global Properties window for
          the client application and click the Extensions
          button to bring up the Extension and Control
            Templates window. 
-  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).
 
-  Click the Insert button and select the GloHyperActiveForCN - Activate Capesoft's HyperActive
            for ClarioNET Client template. 
 
-  If this is a multi-DLL application, then you need to check the
          relevant settings on the Multi-DLL tab. 
 
-  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. 
 
-  Press OK a couple of times to return to the Application Tree.
 
Limitations when using ClarioNET:
      
        -  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. 
 
-  Great care must be taken when hyperlinking to files, that those
          files are in the correct place on the client. 
 
-  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. 
 
-  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>)
                ,STRING | Assemble 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>), STRING | This 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>),LONG | This 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>),long | This 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
        
          
            
              | URLStringSize | equate(4096) | The global size used for URLs in this object. | 
            
              | ItemQtype | queue,type | A list of all the controls with hyperlinks | 
            
              | Control | long | Control Index Number (field equate of the control) | 
            
              | URL | string(URLStringSize) | Fixed URL for the Control | 
            
              | Normal | long(color:none) | Normal Color for list cells and strings. | 
            
              | Bright | long(color:none) | Bright color for list cells and string. | 
            
              | InActiveColor | long(color:none) | The color to use when a control is InActive. | 
            
              | Style | long(0) | Style Number (for column) for list controls | 
            
              | Column | long(0) | Column number of the cell containing the URL in a list control | 
            
              | Underline | byte(0) | Indicates whether to underline a string control or not. | 
            
              | UseEvent | long(0) | Indicates the event to trap to run the URL (by default,
                event:accepted). | 
            
              | Working | long(0) | Indicates the current row that the mouse is over in a list box | 
            
              | Handcursor | byte(0) | Indicates whether the handcursor is required for the control
                or not. | 
            
              | NormalStyle | long(0) | The style attributes for a string/prompt control | 
            
              | BrightStyle | long(0) | The style attributes for a string/prompt control when
                highlighted. | 
            
              | Active | byte0) | The Active byte is used to disable the URL (for e.g. if an
                invalid URL is applied). | 
            
              | UseStdAction | long(0) | The keycode to use (for Entry controls) if event:accepted is
                not used to run the URL. | 
            
              | 
 | end | 
 | 
            
              | TrackerQtype | queue,type | A list of all the columns in a list Box - used for tracking
                column order changes | 
            
              | Control | long | Control Index Number (field equate of the control) | 
            
              | OldFormatCol | string(255) | Header of the Column | 
            
              | ColumnNo | long | Current column Number | 
            
              | 
 | end | 
 | 
            
              | ItemQ | &ItemQType | An instance of the ItemQType, because you can't declare queues
                within a class structure. | 
            
              | HyperBrowser | cstring(256) | Web browser call (now obsolete) | 
            
              | HyperEmail | cstring(256) | Email call | 
            
              | HandCursor | long(0) | Flag to indicate (if not 0) which event must be used for the
                cursor change. | 
            
              | ListURL | string(URLStringSize) | The URL that is obtained from the cell that is clicked. | 
            
              | Inited | byte(0) | Indicates that the PreInit method has been run. | 
            
              | URLToRun | string(URLStringSize) | This is the string used for the URL that is run. It is set in
                the TakeEvent method. | 
            
              | TrackerQ | &TrackerQType | An instance of the TrackerQType, because you can't declare
                queues within a class structure. | 
            
              | OpenProgram | cstring(256) | This contains the Program that is used to run the URL. This
                variable is populated by the RegCheck method - for information
                only. | 
            
              | CheckURLs | byte(0) | Set to auto-check URLs inside the objects (URLs checked in the
                Refresh method). | 
            
              | EncodeEmails | byte(0) | Set this to encode emails to maintain the format in the
                subject (linefeeds/carriagereturns). Not all mailers support
                encoded URLs. | 
            
              | LastFieldSelected | long | The last HyperActive control that was selected/activated. For
                internal use. | 
            
              | HandCursorToUse | string(255) | This property contains the filename (or equate) of the cursor
                to use when passing over the HyperActive controls. | 
            
              | LimitURL | long | To 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. | 
            
              | URLisNotAnEmail | long | If 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' |  | 
            
              | ThisHyperActive.Init(event:timer) |  | 
            
              | ThisHyperActive.CheckURLS = 1 |  | 
            
              | ThisHyperActive.AddString(?MyString1, 'www.capesoft.com',color:purple,
 color:blue,FONT:Regular+FONT:Underline,
 FONT:Bold)
 |  | 
            
              | ThisHyperActive.AddItem(?MyList,2, color:purple,color:blue,4)
 |  | 
            
              | Capesoftweb='www.capesoft.com' | 
 | 
            
              | ThisHyperActive.AddItem(?MyImage,
                  Capesoftweb) |  | 
            
              | case message('Use the co.za Site?',
                  'Question',icon:question, button:yes+button:no) |  | 
            
              | of button:yes | 
 | 
            
              | ThisHyperActive.ChangeURL(?MyImage, 'www.capesoft.co.za')
 |  | 
            
              | 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:
        
            
             
        
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 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}))
            
        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:
      
      General URL issues:
      
      Window Behavioral Errors:
      
      General:
      
      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)    
        if self.URLTORun[1] <> '"'         
      
          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
      
      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)
      
      
        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. ;
      
        - Open the window formatter window and right click on the list.
- Select the List box format... from the
          menu that appears.
- 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) <> ''      
             Case HyperControl
             Of ?PROLIN:Description     
                Self.URLTORun = PROLIN:LINK      
             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. 
      
        - Run Regedit (Windows-R, and type in Regedit and hit enter).
- 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>.
- 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):
      
      
 
  
    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 © 2025 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. CapeSoft Software and CapeSoft Electronics
      (collectively trading as CapeSoft), their employees and dealers explicitly
      accept no liability for any loss or damages which may occur from using
      this package. Use of this package constitutes agreement with this license.
      This package is used entirely at your own risk. 
      
      Use of this product implies your acceptance of this, along with the
      recognition of the copyright stated above. In no way will CapeSoft , 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.
      
      For the full EULA see 
https://capesoft.com/eula.htmlSource 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
    
    Version History
     Download latest version 
here
      
      
      Version
              2.35:  27 May 2025
              
      
      Version 2.34:  16 October 2023
         
      
        - Fix: Hand Cursor on browses had stopped working.
Version 2.33:  23 May 2023
      
      
        - Add: If an "open" fails, with "no associated app" then the RUN
          method tries again in "edit" mode before giving up. (Thanks to Tony
          Hotelier).
Version 2.32:  14 February 2022
      
      
        - Fix: Template UI on global template, Email Options tab.
Version 2.31:  10 February 2022
      
      
        - Add: Translate method to class.
Version
          2.30:  16 September 2021
         
      
        - Add: Support for TEXT controls to behave the same as ENTRY controls.
Version 2.29:  24 May 2021
      
      
       Version 2.28:  (27 March 2020)
      
        - Update: Shortened LinkMode and DLLMode compile switch names.
          Starting to encounter limits in the project system.
          Version 2.27: (8 August 2019)
      
        - Update: Removed code that checks the registry for the default
          browser. Often returns the wrong answer (IE) and the alternative
          approach seems more reliable.
Version 2.26: (2 August 2019)
        - Update: All code that looks for HTTP should look for HTTPS as well.
-  Update: Better interactions with Runscreen.
Version 2.25: (16 Oct 2018)
        - Fix: Renamed sw_shownormal equate so
          as not to generate warning if SVAPI.Inc
          is used.
Version 2.24: (14 Sept 2018)
        - Add: Clarion 11 to install.
Version 2.23: (8 Nov 2017)
        - Add: Folder names can be opened in Windows Explorer by clicking on
          them.
Version 2.22: (19 Jan 2017)
        - Change: Moved Hyperactive init code to before AnyFont code because
          Hyperactive can add styles.
          Version 2.21: (13 October 2015)
      
        - Suppress error on duplicate %NoRestrictTmpStr
Version 2.20: (25 February 2015)
        - Installer support for Clarion 10
Ver 2.19: Released 24 November
          2014
        - Fix for FileExplorer support (missing template variables).
      Ver 2.18: Released 3 November 2014
      
        - Suppress possible "Error Redeclaration of %NormalStringAttribs"
          template warning.
- Fix if runscreen is added, but disabled does not generate the
          runscreen code.
Ver 2.17: Released 11 July 2014
        - Minor template improvement: URL is now an expression. 
Ver 2.16: Released 31 January 2014
      Ver 2.15: Released 11 October 2013
      
        - Fix: Regression caused by Runscreen support if Runscreen was not
          being used.
- Fix: Improvement to getting name of cursor file added to project.
        Ver 2.14: Released 7 October 2013
      
        - Add: Support for RunScreen template
- Add: Trace method to class.
- Add WhereIsColumn and WhatIsAtColumn methods.
- Added column number to control list.
- Changed default Style number on list controls from 2 to 10.
- Refactor: removed conditional compiles for old clarion versions and
          16 bit support.    
- Template work-around for C9 - does not support a template function
          in the #project.
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