Clarion Handy Tools ™ 


CHT BUILD 26A.00.00

Some Thoughts
on Clarion App Development

Most of you, I'm betting, are using CHT as part of development projects that have likely been in existence for years. And so, like many, you're locked into 3rd party tools, some of which have died, some of which seldom or never update, and some of which are great, like CHT (Clarion Handy Tools), for instance.

So, when was the last time you developed a brand new Clarion application from scratch?

When was the last time, you considered developing an app using only Clarion, plus the CHT Tool Kit and no other third party tools?

Our CHT (Clarion Handy Tools) give you the wherewithall via our new updater, to install and update to an isolated, totally separate instance of Clarion on your development machine.

Keep your original instance of Clarion too, of course, and install CHT to it as you have been doing all along, but consider installing a second instance of Clarion in a different directory and pointing our updater at that directory and making CHT, that Clarion instance's only third party tool!


Our updater will install CHT there for you, and allow you to toggle your system to recognize which Clarion installation is going to be the currently in-use instance.

The updater menu "Drive Location" makes the necessary registry adjustments with the "SetCXX" button when you have multiple instances of the same Clarion version installed. Just change the drive location value followed by the "SetCXX" button when you want to "toggle" to one instance or the other.

** NOTE: There's also a utility called HNDCLARIONVERSION.EXE that will perform this same "toggle" step for you too, once you've installed alternate Clarion and CHT instances to any new directories. **

However, that "toggle" step isn't really even necessary if you install two different Clarion versions on the same machine. Different versions of Clarion use separate registry entries so these entries don't clash and don't need to be "toggled" the way separately installed instances of the same Clarion version on the same machine do.


Some of you may be on the C11.1 treadmill caught in a loop waiting for SV to move AnyScreen along so you can finally move your 20-year old desktop application to the web. Good luck with that.

Just know while you were sitting on your hands waiting, we have been building web apps for those 20 years using only Clarion and the CHT Tool Kit!

Ask yourself this. Why does a web app built with AnyScreen, have its user interfaces embedded inside the app?

Web apps display their user interfaces to the user, who is located somewhere other than where the server is located. So why are Clarion 11.1 with AnyScreen user interfaces still inside the server app the way they always have been in traditional desktop applications? Maybe its time we stopped dragging our 20-year old desktop apps forward into the web era, and we jointly give one-piece-app-design a serious re-think!

NOTE: It's probably time that you built some new apps, from scratch and applied a new way of thinking about web apps - whether web apps with a Clarion-based user front end or web apps with a browser-based front end. The same design principles apply when it comes to the user-interfaces(s).

Many of you thank, heavens, are NOT holding your breath for AnyScreen so you don't have any great need for C11 or C11.1. Clarion 10 will do just fine!

But even so, that C10 of yours is probably weighed down by third party stuff that you don't need for most projects, except for maybe that old app suite you've dragged forward for years from, C4, C5 or C6? Yikes!

Now we're not encouraging you necessarily, to stay with C10. Which Clarion version you decide to use is obviously your decision!

And CHT is perfectly and equally viable with C9.1, C10, C11 or C11.1.

Just consider, however, how productive you might be, creating some new work, if you had a separate installation of your favorite Clarion, (on the same dev computer) unburdened by those old, mostly unnecessary templates, and sporting a nice, new, fresh copy of our CHT Tool Kit and a tiny, fast, TEMPLATEREGISTRYXX.TRF.


This new "CHT Utility Application", is designated as CHT's alternate, user-interactive video player. It streams .MP4 versions of videos from CHT HQ, most of which are likely to be "quick and informal" responses to CHT-developer questions regarding the use of some CHT component, class or template.

We will begin posting videos to HNDVIDEOJOURNAL.EXE immediately following this update. You can let us know if there are any problems viewing these. Although we doubt there will be since the app has been well-tested. The menu will tell you by date and title when new videos appear for your attention. The newest video will appear at the top of the menu the oldest at the bottom of the menu.

In upcoming releases of this application, we plan to use it also as a means by which developers needing assistance can upload short videos to outline a problem they may be having.

We'll provide a built-in uploader as part of the app to post your video to the HNDVIDEOJOURNAL.EXE server.

We can discuss before final design whether the uploader portion of this app (yet to finalized) should include a privacy feature to indicate that the user video is intended for general viewing or as a private communication with CHT. We can also help you decide which video-creation tool might be best to produce a quick .MP4 with your questions and screen takes.


This "CHT Utility Application" illustrates a CHT template called EmbedFileNotifyFunctions and a CHT class called HNDFileNotify located in modules HNDFILENOTIFY.INC and HNDFILENOTIFY.CLW.

The class attached to your procedure by this template, once initialized, gives your procedure the ability to detect all changes occuring in a nominated directory and, optionally, its subdirectories. Whenever a new file is added to the target area, or a file is changed, your procedure is sent an event called EVENT:FileChanged to signal that this has occurred. At that point, what you do as a programmer to act on that event is wide open.

This application illustrates one use of this powerful, directory monitoring capability. When a file is added to the designated source directory, files matching the user-added filter are copied to a target directory somewhere else on the local network.

The file or files meeting the filter setting provided on the application interface, eventually then, end up sitting somewhere else on the network, for instance, in a server directory. There is also an optional switch to remove the processed source file(s) from the directory being monitored.

The service can be run multiple times as separate "instances" with each instance performing a separate task using a different filter, source and target directory. The instance number must be set before starting the service.


See any one of the following demo apps which use EXPLORERBROWSE to gain experience with this browse colorization option. See HNDSQL1.APP, HNDSQL3.APP or HNDACCES.APP.

These browses expand on the "Set Sort Column Reverse Colors?" option available on ExplorerBrowse EXP ONE TAB's "Sort Column Color" button.

The chief point of this is to help you avoid 100% any browse colorization work on the ABC template underlying the Explorerbrowse. The "Reverse" option now, when checked, additionally highlights the browser header bar, and the browse selection bar to reverse also with the selected column when sort order is determined with a header click.

Currently this new capability is implemented in EXPLORERBROWSE only, and the feature only affects the action of the "Set Sort Column Reverse Colors?" switch. When we gauge CHT user reaction to this extended colorization feature we'll roll it into our other browse templates, HandyMarkerBrowse and ListBoxBrowseExtender.

One of our first HNDVIDEOJOURNAL.EXE videos will discuss this new feature and encourage feedback via our CHT Forum app HNDCLIENTCL.EXE and the new video sharing app HNDVIDEOJOURNAL.EXE to discuss and jointly improve the feature.


The latest CHT installer VER 26.4 has a new "Pre-checks" item on the menu called "CHECK FOR LATEST CHT VIDEO JOURNAL APP". The point of this menu is to allow us to evolve HNDVIDEOJOURNAL.EXE outside the normal CHT toolkit update cycle, and so provide you and us with a more accelerated pace of development cycle for this new user-interactive CHT tool.


We've made some formatting improvements, as well as spelling and grammar corrections in these documents:

Any cases where these docs refer to non-existent DEMO APPS, the reference to that app should have been removed. A few references may remain intentionally as we plan to re-instate certain apps as soon as we find time. If you spot any reference(s) to an app or apps that you cannot presently find in your /hndapps/ directory below your Clarion installation, let us know via the CHT forum app HNDCLIENTCL.EXE.

Feedback that you're actually looking at our docs is encouraging and will be met with a quick response from us.


HNDINI class has always provided for the use of functions that emulate Clarion's PUTINI() and GETINI() to write to the registry rather than to an INI file.

These two functions were always called and continue to be called as follows:



The class has always written to HINI.FileName, which serves an INI file name or as a registry location depending on the configuration provided on the AACHTControlPanel template's "Config" tab where there is a checkbox that asks: "Use REGISTRY INI?"

When left unchecked the INI file written to is the same INI file name configured globally on ABC. We suggest you don't ever leave this unchecked because INI files are just not used any more for too many reasons for us to repeat here.

When "Use REGISTRY INI?" is checked a field labelled "Registry Location" is enabled and a value appears inside, displaying something like: Software\CHT\AppName10.

Unless you change the auto-provided value, this becomes the registry location into which your app writes. Look at any of our demo apps. They all use the registry in this way for application configuration storage.

With a suite of apps, its useful and prudent to write your values to a registry area that identifies the SOFTWARE DEVELOPER and the APPLICATION NAME or better yet, the APPLICATION SUITE NAME.

So the suggested value for a company called "ABCSOFT" for 3 separate independently operating apps might be:


While the suggested value for a company called "ABCSOFT" for 3 separate, but co-operatively operating apps or DLL apps might be:


To make these GETINI and PUTINI registry functions even easier to use, we've added with this 26A.00.00 build, the function names GETINI and PUTINI directly to the HNDINI class such that you can now perform the same GETINI, PUTINI calls displayed above with the following syntax.


Val = HINI.GetINI('S','E','V',HIni.File)

All CHT demo and utility applications use a "Software\CHT\AppName" registry location model, so you can look at the AACHTControlPanel's Config dialog of any CHT demo or utility app to determine where in the registry to look for the "AppName" area being written to.

We have modified for this build a very basic example called HNDTEST.APP in order to illustrate writing to and retrieving from registry location: "Software\CHT\HNDTEST10" -- see the procedure called "TESTFILEDIALOG" for basic example GETINI and PUTINI code.


When an app or app suite consists of multiple related EXE's or multiple related DLLs it is a simple enough matter to include a separate HNDINI class with each exe or DLL and configure the "Software\CHT\AppName" with the same location value.

This approach provides for a common registry location for the entire app or app suite. And registry writes and reads can be shared amongst all components without you having to fret about whether app configuation information is going to the correct storage location in the registry.

CHT BUILD 26A.00.00

The work on 26A.00.00 Build proceeds on the expected time line.

We've been further improving the CHT template docs:

And improving the CHT classes docs:

And improving the CHT application docs:

Also, a considerable amount of work has gone on recently in HNDHTTPS.CLW our HTTP/HTTPS class. This is the class code that works with templates like EmbedHTTPFunctions to enable apps for upload and download of files and to make connections with an HTTP/HTTPS server.

As promised near the end of the 2021 season, we'll be creating educational videos again. These will initially be focussed on explaining the CHT Utility and Example Apps.

** Utility and Example Apps:
• How they were built.
• How we use them on a daily basis<.br/> • How you can incorporate them in development.

** Web Understandings:
• How to upload and download files.
• How to build a website using only CHT.
• Understanding the term "web" app.
• Text messages to phones from a computer.

** One-On-One Web Classes :
These can be arranged with me on a request
(paid basis) to do anything from re-developing
your existing apps to building a new app or a
new app suite from existing data and dictionaries.

I'm going to be focussing the video work in items 1 through 6 on CHT apps that I think are important, so if there are any that you want me to teach on, please let me know by return email.

Give the On-Line classes some thought and get back to me by email if there's something you want or need.

We're aiming to get the 26A.00.00 Build out for a January 21-24 time window.

CHT BUILD 26A.00.00
Release Target Date Mid-January, 2022


This is a list of CHT utility applications with Clarion version specific registry settings.
There are 8 of them:


These apps keep their settings in Clarion-version-specific registry locations so that the 4 different Clarion versions of these apps do not share the same lookup information when they operate.

The reason for this is obvious when you think about it. For instance, HNDCMP.APP, the CHT Compile manager will present the last used compile file for the Clarion version showing on the splash screen.

These apps have splash screens that identify them to you with the Clarion Version displayed in the lower left hand corner. Here you'll see C9.1, C10, C11 or C11.1 depending on which Clarion version you're working with to compile the app.

Note too that these first 8 apps display a slightly newer splash screen image identifying the company as "CHT (Clarion Handy Tools)" instead of "The Clarion Handy Tools" or just "Clarion Handy Tools".

Contact CHT

Contact CHT