Clarion Handy Tools ™ 
Templates•Classes•Utilities•Projects
Applications•Online

JUNE 2022

Build 26B.00.00 Official Release

Major Template
Interface Redesign

I'm extremely pleased with the work we've done with this 25B.00.00 update. While it has taken nearly twice as long as scheduled to get this to its present point, the important stuff is done and working, in my opinion, better, and easier (for CHT developers) than I even dared to hope.

We'll get to that important stuff in a minute, but we'd like to let you know that a lot of work has also been performed on CHT template interfaces. They have been re-designed extensively and with much thought and considerable effort.

ABOUT CLARION TEMPLATE
INTERFACE DESIGN WORK

Template interface work is time consuming and exhausting, because although, you may not know it, Clarion Template code does not provide the template developer with a screen designer/previewer.

Template screen layouts are not created by screen preview the way that Clarion developers are able to do screen design and layout in the Clarion IDE window designer.

Clarion template screen layouts are done the hard way: in code. There's no easy way of knowing, except perhaps by instinct and practice, whether the screen co-ordinates of an input field that we present to you in order to enter, say, a file name, on the template interface, is going to come out exactly as we want it to.

Why is that? -- no screen designer or previewer. We have to save template code from, the Clarion Editor and allow it to re-register. Template re-registration is the Clarion template equivalent of application re-compile.

Then to examine the result of our work, the template has to be RUN just to see what its going to look like in the IDE.

That's exactly like writing standard Clarion Code for a window layout, but doing it only with the Clarion Editor and without benefit of a screen designer/previewer.

Then, having to compile the app, and RUN it to see what the window looks like and THEN, perhaps, only after multiple steps, to find that a certain control is too far left and overlays another one.

When we design a template input screen, a lot of the work is intuitive, based on years of practice. After all, we have been producing Clarion templates for 26+ years now!

Compare our template interfaces to those provided, by say, Topspeed itself, and you will appreciate, the great deal of thought, effort and patience that have gone into our template input dialog designs.

CHT Template screen re-design is, at this point, 2/3 complete, with the major templates -- the ones we consider most important -- completed. Now that doesn't mean, that the templates for which we have not yet re-designed the input dialogs are broken, not in the least. They will continue to work correctly as expected. But we're sure you will recognize and appreciate the difference in the new layouts and the improved template documentation.

APPLICATION AND BROWSE
STYLING CONTROL
LIKE NEVER BEFORE

We've added a considerable amount of ease, speed and flexibility to our CHT browse extension templates: ExplorerBrowse, HandyMarkerBrowse, ListBoxBrowseExtender and ClientServerBrowseListBox.

You can now add any one of NINE pre-configured browse color themes with a single click of a button. To see the color scheme layouts in code, open HNDEQU.CLW and search for, say, "T0:" or "T1:"

BROWSE COLOR THEMES
AND VARIATIONS
colorthemes01.png
 
colorthemes02.png

The default setting for application browses encountering these new "COLOR THEMES" browse template enhancements for the first time, is the one we call "T0: Theme Color None".

This setting automatically disengages CHT Color themes from your browse and passes through your own window and listbox colors as you may have them configured in the IDE window designer.

Of course, browse behaviour works as always under "T0: Theme Color None": column-click sort, filtering, locating, scroll and highlight behaviour, all of it. Only our color and highlight styling pre-choices are disengaged and the choices you made in your window design, show through.

EXAMPLES OF CODE GENERATED
IN ONE OF OUR DEMO APPS

These are the ** Browse Color Styling ** values currently selected on HandyMarkerBrowse. The browse color theme, by default, is set to "T0: Theme Color None" as described above.

colorthemes03.png
 
colorthemes04.png

To engage any of our nine, instant, pre-configured color and highlight themes listed above under "BROWSE COLOR THEMES AND VARIATIONS" simply visit the CHT browse template in use on your procedure, open the "** Browse Color Styling **" dialog, (see below) and select a color THEME by pushing a single button.

colorthemes05.png

All theme colors are tastefully pre-selected to provide maximum visibility of text through background even if you choose to intermix the pre-configured choices, which you can easily do.

Though you certainly do not need to manually intermix. But color-theme settings CAN be manually intermixed on the template for different browse elements such as sort header highlight color, browse header color, browse grid and selection bar color, for a totally user-custom effect that still maximizes text readability through color.

If you choose to intermix instead of simply selecting one of our pre-sets, your choices can be saved to our template config file and read, again with one click, into other procedures and/or other apps, for a totally fast, easy and consistent look and feel from procedure-to-procedure and from application-to-application.

APPLICATION STYLING
APPLICATIONIMAGESEX
Global, Local or Skip

Application styling may be configured from ApplicationImagesEx to apply globally to your application. The global template ApplicationImagesEx, attaches our ProcedureImagesEx template to your procedure window, where it applies color, font and optional wallpaper values to your procedures under the following conditions determined on ApplicationImagesEx.

colorthemes06.png

"Enable Global Styles on ProcedureImagesEx" is the setting we primarily use, and which we prefer for ourselves, since once the style settings for any application are decided, these settings can be saved to "Template Config" and read into all other applications with a single button click.

Global styling cross-configuration of this sort promotes good, consistent design implementation. It provides interface consistency from one procedure to another and from one application to another.

"Enable Local Styles on ProcedureImagesEx", the second global ApplicationImagesEx option, provides ON-TEMPLATE procedure window styling control at a procedure-level.

Style settings are passed through from global to ProcedureImagesEx, where they can be changed and overridden locally right there on ProcedureImagesEx, giving you procedure-level styling via this local template.

Finally "Skip Global Styles On ProcedureImagesEx" mode is provided on ApplicationImagesEx. This turns off CHT styling and reverts it to 100% developer control at the window designer level. In this case ProcedureImagesEx still attaches to your local window, but the template is disengaged, from generating any styling code into the window procedure. You can, of course, embed styling changes if you want to, but ProcedureImagesEx does not generate styling code.

PROCEDURE STYLING
PROCEDUREIMAGESEX

Regardless of your Global styling choices on ApplicationImagesEx, CHT's ProcedureImagesEx template still provides local, savable, (window procedure control) over style settings by offering these four options which are always available to the developer regardless of any global ApplicationImagesEx settings. However, the choice made on ApplicationImagesEx is selected and acted upon locally, unless changed (i.e. overridden) locally on ProcedureImagesEx.

colorthemes07.png

The first choice, above, provides a way to locally remove the ProcedureImagesEx template from the influence of ApplicationImagesEx and "Locks" the template to one of the settings selected there, namely 2, 3 or 4 as determined by the developer.

With "Lock" disengaged (unlocked is default) the setting you chose on ApplicationImageEx is passed through to our procedure-level, local template. Hence, ProcedureImagesEx provides the styling services selected on the global template.

Setting #3, "Enable local styles on this window" provides three extra styling tabs at the local level to ProcedureImagesEx. These are: "Local Images" "Local Window" and "Local Controls". These styling tabs can be completed, manually or developers can insert CHT defaults and/or save developer choices and recall developer choices made elsewhere.

Setting #4 "Skip style settings on this window" causes ProcedureImagesEx to generate NO styling-related code into your window procedure. The template does however generate descriptive comments to explain what the ProcedureImagesEx settings are, and what the results of developer choices will be in this specific window procedure.

Please take some time you study CHT demo applications for example usages of the the features described above. Good example apps are:

HNDCMP.APP (HNDMARKERBROWSE)(i.e. HMB)
HND2.APP (EXPLORERBROWSE) (i.e. EXPB)
HNDCLIENTCL.APP (CLIENTSERVERBROWSELISTBOX)(i.e. CSBL)
HNDTPLREGISTRY.APP (LISTBOXBROWSEEXTENDER) (i.e. LBX)
There are over 100 other CHT example applications to illustrate CHT template usage.

If you'd like to implement a color-intermixed browse in your application(s) just navigate to our browse template (LBX) in our HNDTPLREGISTY.APP example, and open the "Browse Color Styling" dialog and click the "SAVE" button. Now in your own app, regardless of which of our browse templates you've applied, Click the "RECALL" button and the styling-design from HNDTPLREGISTRY.APP is now applied in your own application.

colorthemes08.png

** BROWSE COLOR THEMES **

One-Click Theme Select,
Color-Mix Themes or
Color Themes Off

We've added a considerable amount of ease, speed and flexibility to our CHT browse extension templates: ExplorerBrowse, HandyMarkerBrowse, ListBoxBrowseExtender and ClientServerBrowseListBox.

You can now add any of NINE preconfigured browse color themes with a single click of a button. These are illustrated in the image below.

The default setting for browses encountering these new "COLOR THEMES" browse template enhancements, is what we call "T0: Theme Color None". This setting automatically disengages CHT Color themes from your browse and passes through window and listbox colors as you may have them configured at the window design level. Browse behaviour works as always, column-click sort, filtering, locating, all of it. Only our color and highlight styling pre-choices are disengaged and the choices you made in your window design prevail.

To select any of our instant, pre-configured color and highlight themes in GREY, RED, GREEN or BLUE, two variations of each, simply visit the CHT browse template (as named above) and select a color THEME by pushing a single button, regenerate, compile, and view.

Our color-theme settings can be manually intermixed for different browse elements such as sort header highlight color, browse header color, browse grid and selection color for a totally custom effect. Once a set of choices is made, these choices can be saved to a config file from our template and read-into other procedures and/or other apps, again from our template, for a totally fast, easy and consistent look and feel from procedure-to- procedure and from application-to-application.

** APPLICATION STYLING **

Global, Local or Manual

Application styling can be configured from ApplicationImagesEx to apply globally to your application. This setting attaches ProcedureImagesEx to your procedure window where it applies color, font and optional wallpaper values to your procedures. This is the setting we use, and which we prefer for our own use, since once the style settings for one application are decided, these settings can be saved to "Config" and read into any other application with a single button click. Global styling selections promote good, consistent design choices, and provide interface consistency from one procedure to another and from one app to another.

A second global ApplicationImagesEx option applies procedure window styling on a procedure-by-procedure basis to your application. Style settings are passed through from global to ProcedureImagesEx, but they can be changed and overridden locally right there on ProcedureImagesEx giving you procedure-level styling via our template.

Finally "Skip" or "Manual" mode is provided on ApplicationImagesEx. This turns off CHT styling and reverts it to 100% developer control at the window design level. In this case ProcedureImagesEx still attaches to your local window, but the template is disengaged, from doing anything.

 

chtcolorthemes001.png

 

EMBEDWINDOWFUNCTIONS
TEMPLATE

This template will now automatically populate on all window procedures from CHT Global template ApplicationImagesEx.

The presence of EmbedWindowFunctions on a window procedure makes visible quite a number of CHT Control and Extension templates that otherwise might not have been visible unless you manually inserted the template on your window procedure beforehand.

PROCEDUREIMAGESEX
TEMPLATE

This template always self-populated on your window procedures from our global template ApplicationImagesEx. But wait, some of you never actually bothered to go to the ApplicationImageEx template to enable it. So, in effect, it did nothing on your application because while disabled, ApplicationImagesEx does not auto-populate ProcedureImageEx.

As of the last build update, 26A.01.00, ApplicationImagesEx is fully enabled by default. There is no longer a "Disable" setting on this template. This continues of course, in 26B.00.00. We have however, given you global control over the three local settings being exercised on the window procedure by ProcedureImagesEx.

While ProcedureImagesEx is now present on your window procedures you still can fully control from our global ApplicationImagesEx template, which of the three outcomes listed below is excercised locally.

ApplicationImagesEx and ProcedureImagesEx have styling effects (images, fonts, and colors) on your application windows using the following rules-of-thumb.

1) ProcedureImagesEx can pass through global styling from ApplicationImagesEx

2) ProcedureImagesEx can provide local-window styling on its template interface

3) ProcedureImagesEx can skip doing anything about styling, images, fonts and colors

TWO NEW TEMPLATES

CHTAddGlobalsFirstControl
CHTAddGlobalsFirst

There are two new templates, "CHTAddGlobalsFirstControl" (Control Template) and "CHTAddGlobalsFirst" (Extension Template). These two templates are guideposts, effectively, since their sole purpose is to appear alone in the IDE's control and extension template selection dialogs when you do not yet have our global master template "AACHTControlPanel" and its associates installed.

So let's assume you have an application in which there are no CHT templates of any kind installed.

Poking around, you open the Extension Templates selection dialog looking for any CHT extension templates. All of our Extension Templates, as of our March 9th update, are invisible to any app which does not have AACHTControlPanel installed. If that condition applies, the only Extension Template you will see from CHT is: "CHTAddGlobalsFirst". Template instructions are below.

Poking around some more, you open a window and want to add CHT Control Templates to your window. All of our Control Templates, as of our March 9th update, are invisible to any app which does not have AACHTControlPanel installed. If that condition applies, the only Control Template you will see from CHT is: "CHTAddGlobalsFirstControl".

Template instructions are below:

In previous builds, all local control and extension templates which were dependent on AACHTControlPanel, ApplicationImagesEx and HandyVersionResource, would simply install these three required global templates into the app for you in the background, as soon as you installed any local template from the Extensions Selection Menu or from the Control Templates Selection Menu.

WORK SMARTER NOT HARDER

That was introduced as a convenience for developers following the old Clarion adage "work smarter not harder". The idea was, that any template which is dependent on other, higher order, templates simply installed those higher order global templates for you first, automatically. Before installing itself.

The problem with that "easy peasy" approach is that it only IMPLIES and doesn't DEMAND that the developer go first to the higher order, global template interface to configure THAT, before proceeding with the implementation of the local Extension or Control Template being added, and which to varying degrees, has dependencies in the correct configuration and setup of the higher order template to which it connects.

So, the whole point of "CHTAddGlobalsFirst" and "CHTAddGlobalsFirstControl" is to draw attention to the fact that the correct use of MOST CHT TEMPLATES in your app is dependent on THREE CHT GLOBALS --FIRST-- being present in your app, --SECOND-- being configured to certain minimum requirements.

The text instructions on "CHTAddGlobalsFirst" and "CHTAddGlobalsFirstControl" point out the need to deal with "AACHTControlPanel", "HandyVersionResource" and "ApplicationImagesEx" BEFOREHAND.

CHTADDGLOBALSFIRST
TEMPLATE

This is the only CHT EXTENSION TEMPLATE that displays in the CLARION EXTENSIONS SELECTION list from the IDE when CHT Global template AACHTControlPanel and its associates, are missing from your Application.

And while "CHTAddGlobalsFirst" template does offer to include all required CHT Global templates into your application automatically, those auto-added templates still need to be configured FIRST.

It is therefore recommended that rather than using this "CHTAddGlobalsFirst" template when it appears in the IDE extension selection list, that you cancel out at that point and proceed instead to your application's "Global Extensions" area to select "AACHTControlPanel" and include it into your app.

Three other required CHT Globals are added to Global Extensions by inserting AACHTControlPanel. These are: "AACHTControlPanelClose", "ApplicationImagesEx", and "HandyVersionResource".

Three of these four CHT Global templates require a degree of pre-configuration. See the CHT Help file CHTTEMPLATES.HTML or CHTTEMPLATES.PDF and search for the template names given above.

CHTADDGLOBALSFIRSTCONTROL
TEMPLATE

This is the only CHT CONTROL TEMPLATE that displays in the CLARION CONTROL TEMPLATES SELECTION list from the IDE when CHT Global template AACHTControlPanel and its associates, are missing from your application.

And while "CHTAddGlobalsFirstControl" template does offer to include all required CHT Global templates into your application automatically, those auto-added templates still need to be configured FIRST.

It is therefore recommended that rather than using this "CHTAddGlobalsFirstControl" template when it appears in the IDE extension selection list, that you cancel out at this point and proceed instead to your application's "Global Extensions" area to select "AACHTControlPanel" and include it into your app.

Three other required CHT Globals are added to Global Extensions by inserting AACHTControlPanel. These are: "AACHTControlPanelClose", "ApplicationImagesEx", and "HandyVersionResource".

Three of the four CHT Global templates added require a degree of pre-configuration. See the CHT Help file CHTTEMPLATES.HTML or CHTTEMPLATES.PDF and search for the template names given above.

Contact CHT

Contact CHT