CHT (Clarion Handy Tools)
Templates, Classes, Utilities, Apps, Projects

November 1, 2020

CHT 2020 VERSION 24D.01.00


This "CHT Utility Application", HNDFBACKBUILDER.EXE, is a translation-file tool that every CHT developer who builds non-English applications should learn how to use.

A POLISH translation category was added as of this update. In previous builds we were storing the POLISH translation, in the USER category for want of a slot to store this. The USER category translation reverts, in this 24.01.00 update, to a copy of the ENGLISH translation file. This opens up the USER category back to its original purpose, to act as an alternative to the English translation file provided in the event you want to override that.

Should you wish to create a custom version of the USER (or any other language) category translations file provided, you can do that using HNDFBACKBUILDER.APP

Since we ship our own versions of these translation files with any new build, HNDFBACKBUILDER.APP now provides a "Backup" button on the toolbar (8th toolbar button from the left) which backs-up your edits into a direct copy "BAK.TPS" file.

For instance, a backed-up copy of HNDCUSTOMTRNFRENCH.TPS is named HNDCUSTOMTRNFRENCHBAK.TPS. All translation .TPS source files viewed from HNDFBACKBUILDER.APP are located in this directory sequence: /accessory/hnd/translations/languagename/.

Backups are placed in the same directory as the original, using the naming convention described above.

We will never ship a "BAK.TPS" file in the event you are keeping one for your own customizations to the standard translations.


Two non-English demonstration applications are included in your toolkit's /HNDAPPS/ area.

These are: and On the "Query Keywords" dialog of our 24.01.00 template, when you open either of these applications, you will see that we've created two language-specific definition files assigned for these applications.

They are: hndparsenewfrench.txt and hndparsenewdutch.txt, respectively. These files are now included with the latest installation in the \HNDAPPS\ directory where our demo apps are located and where they expect to find them (i.e. in the same directory as the app).

These files are solely for reference by our templates in order for them to look up query keywords for use in all other CHT template dialogs, for example the "Locator As Filter" dialog with which, you can assign a specific query keyword to any of your browse columns when the CHT browse extension's "Built-In Locator" dialog is enabled.

The name of this text file is always "HNDPARSENEW.TXT" unless you change it for that application. Any new name you assign, stays with that application. Any new applications you create will default of course, to "HNDPARSENEW.TXT", but you can select one of your edited .TXT files into the template dialog, after which that new name stays with the application until you change it.

The contents of "HNDPARSENEW.TXT" or the named replacement that you use, will always contain ENGLISH keywords unless you edit it. Our template never changes the contents of this file except by your direct intervention on the template.

The inclusion of these separate .TXT files, isn't strictly necessary, though. Their inclusion merely accommodates the mixed-language, mostly English, group of demo applications that we ship with our toolkit. Hence each of these non-English apps has it's own specific "Keywords Definition File", named differently from the default name "HNDPARSENEW.TXT".

You may have already modified "HNDPARSENEW.TXT", the default keywords definition file, to your own language specifications. Our template has always had, and continues to have an edit/modification menu that enables you to modify the "HNDPARSENEW.TXT" (or alternate) file installed on the template interface of your applications.

The file name inserted in that dialog stays with the application and belongs only to applications that apply that name on our template. If the file named does not already exist our template creates it, and inserts the English keywords, after which you are then able to edit/modify from our template's interface.


When you open, say, or and click the "Global Extensions" tab, followed by "CHT AACHTControlPanel" followed by the "Config" tab, followed by the "Global Settings" menu, followed by the "Translation" tab you will see an addition to the "Global Translation Pragmas" dialog.

Below the two (1) HNDFBACK.TRN / (2) HNDCUSTOM.TRN switches, is a new, optional, field which may contain the location and name of a HNDCUSTOM.TRN file created with (i.e. generated by) HNDFBACKBUILDER.APP. In all of our English apps this (1)/(2) switch is set to (1). This causes the app to use HNDFBACK.TRN the default English language translation file and the new "location and name" field is disabled.

With the (1)/(2) switch set to (2) the "location and name" field is enabled and while the field is optional, and may remain blank, you may enter a partial directory name (i.e. naming the language only) and the HNDCUSTOM.TRN file name.

This dialog will only make disk changes under these specific circumstances:

** First, your app has configured the (1)/(2) switch to (2) and you have inserted a legal, language-specific path along with the HNDCUSTOM.TRN file name. See the two example non-English apps named above for specifics on how this field is formatted.

** Second, your Clarion (10 or 11) installation /accessory/libsrc/win/ directory DOES NOT ALREADY CONTAIN a "HNDCUSTOM.TRN" file. In the event you already have this file, our template WILL NOT overwrite it as it may contain your custom translation information not backed up elsewhere.

Thus, if your /accessory/libsrc/win/ directory does not already contain a "HNDCUSTOM.TRN" file, and you compile "" you will find that the app correctly uses FRENCH keywords from the freshly-installed HNDCUSTOM.TRN file now located in your /accessory/libsrc/win/ directory and copied over from the translation directory located at /accessory/hnd/translation/languagename/ specified on the template.

Further, if you now load "" you may remove HNDCUSTOM.TRN from your /accessory/libsrc/win/ directory first. After which, our template will bring across the dutch version of HNDCUSTOM.TRN from the "dutch" directory specified on the (1)/(2) dialog as described above. So, when you compile "" you will find that it also correctly uses DUTCH keywords from the freshly copied HNDCUSTOM.TRN file copied into your /accessory/libsrc/win/ directory by our template.

Our template does NOT have to be this picky about not overwriting your HNDCUSTOM.TRN file, but we've implemented this with an abundance of caution in the event you DO have apps that use the (2) option and you've already installed a HNDCUSTOM.TRN specific for use by your own applications. If you have such a file of your own design that is not one of the default, HNDCUSTOM.TRN files, generated by HNDFBACKBUILDER.APP, and shipped by CHT, make sure to back it up, and temporarily remove it from your /libsrc/win/ when or if you perform the tests described here, with these two non-English demo applications.


These two long-time CHT apps are pre-compiled for you and are located in the \accessory\bin\ directory below your current Clarion10 or Clarion11 installation. Also, the source code for them is provided in your \hndapps\ directory.

When a batch script is generated using the "Batch Script Generate" button on the HNDCMP.APP toolbar (10th icon from the left) the user, now, is asked if they want to view the script. Also, the clipboard is set with the name of the batch file just generated. Thus, when you run HNDBATCHRUNNER.EXE from HNDCMP.APP, using the "Batch Runner RUN" button" on the HNDCMP.EXE toolbar (17th icon from the left), with the batch file name already on the clipboard, HNDBATCHRUNNER.EXE now changes the file mask on its interface to point to that file so it can be easily selected and readily opened or RUN from there.

With a generated batch script, of this sort, it is possible to compile a single app or a selected group of apps outside of HNDCMP.EXE, from the "Run" button on the HNDBATCHRUNNER.EXE toolbar (6th icon from the left).

For easy access to the script, without later having to manually start HNDBATCHRUNNER.EXE, it is also possible to create one or more "Desktop Favorites" that start and run any selected batch script automatically, by simply clicking the desktop icon created by HNDBATCHRUNNER.EXE.

To create such a desktop link to the selected batch file, click the toolbar "Heart" icon (8th icon from the left) on the HNDBATCHRUNNER.EXE interface.

Once a new icon appears on your desktop, you can close HNDBATCHRUNNER.EXE and double click that new icon to compile the apps that were highlighted when you created the batch script in HNDCMP.EXE with the "Batch Script Generate" button.


When a viable batch file name is found on the clipboard a file mask and path are inserted on the HNDBATCHRUNNER.EXE interface's MASK and PATH fields. This permits the developer to generate a batch file with HNDCMP.EXE and immediately open HNDBATCHRUNNER.EXE with the just-generated batch file visible in the batch-files list, ready to be run.

A clear button has been added to the MASK field to reset the batch file browse to display "*.BAT" at the current PATH.


We have incorporated the ability to set the following compilation flags from HNDCMP.APP without you having to open the app, and modify the APP settings.

This applies to both C10 and C11:
LARGE_ADDRESS (on or off)
DYNAMIC_BASE (on or off)
DEP (on or off)

The EXP column on HNDCMP.APP (4th column from left) now serves to configure some or all of the above three .EXP file settings. A single click on a blank EXP row causes the column value to change to one of 4 possible values: EXP-3, EXP-2, EXP-1 and BLANK.

The following .EXP outputs are applied to your application, and saved as new template values (in your app) as a result of these HNDCMP.EXE settings:

BLANK applies the current template Settings currently already configured on that application's AACHTControlPanel global template .

If you're unsure what these flags do to your compiled application, see our website at the following URL: september2020.htm for an explanation.


This HNDSQLEXPBQRY.APP came to be as a result of at least one CHT developer encountering difficulties in C11 applying CHT query template QueryParsingFilterControl on a bare ABC browse, an ABC browse that is not also using a CHT browse extension template like ExplorerBrowse (EXPB) OR HandyMarkerBrowse (HMB) OR under the condition where the QueryParsingFilterControl was populated first, before any CHT Browse extension was applied.

The straight (raw) application of QueryParsingFilterControl (QPFC) on an ABC browse without first having a CHT Browse Extension template in place caused a BIND GPF in C11, using binding code we've been using since Clarion 6 and has worked on all Clarion versions prior to the Clarion version.

It appears that Clarion has some internal library bugs that break the BIND() function, or perhaps the WHAT() function, under certain heavy-use conditions. FWIW, we've reported this to SV.

When this condition arose, some extra VIEW field binding code was being applied by QPFC. We've removed this extra "Auto-Binding" call from our template since all variations of our templates already provide specific field binding dialogs where the developer can creatively BIND alternative field names to view fields. That eliminates the GPF even if the C11 "Bug" is never corrected.

HNDSQLEXPBQRY.APP is a CHT demo built with CHT templates and is roughly based on one table set from an SV demo application called SCHOOL.APP. It experiments specifically with the School-Classes table located in HNDSCHOOL.SQLITE. The SQLite Data tables are imported from the original TOPSPEED files provided with SV's SCHOOL.APP.

It uses the SQLite driver, the ABC browse template, PLUS CHT's EXPB browse extension, set to UseSQL=True and CHT's QPFC query template.

To analyse the allocation of templates in this application, open the application in the Clarion IDE and navigate to Global Extensions, select AACHTControlPanel and click on the menu item "Templates By Proc". This sequence of actions triggers an HTML document to display which enumerates and names all templates used in the application by procedure.

We chose to apply, as always, our "minimalist" screen design which avoids unnecessary use of tab controls, and shuns MDI child windows. Control buttons are for the most part kept to the toolbar and when placed on a window are always above the edit fields or list box.

EXPB = ExplorerBrowse
QPFC = QueryParsingFilterControl

Contact Us

Click the link below to contact us by email.
It will start your email client with our email address inserted:

Click To Contact Us