Clarion Handy Tools
Templates, Classes, Utilities, Apps, Projects
June 22, 2019
Build 23B.02.01 Posted
LBX Clear Filter On Order Change

ListBoxBrowseExtender (LBX) now adds a "Clear Filter on Order Change" switch to the Built-In Locator dialog. If checked, this switch clears the current filter and empties the ShadowQ when browse order is changed with a header click.

All other filters are cleared also, LBXFieldFilter, LBXViewFilter and LBXCHTQuery.

However, LBXLoadTimeQuery remains in place and if this variable contains a value, it will govern the contents of the Main Queue until cleared or modified. Contents of variable LBXLoadTimeQuery may be established on the template or at run-time as the developer sees fit, given application requirements.

LBX Has A Two-Queue Display System

ListBoxBrowseExtender (LBX) works with a unique two-queue display system. The chief advantage of this system is to reduce the amount of data-chatter between the client app and the data tables. If the data tables are managed by a remote server, this can vastly improve data speeds across the WAN or the WEB.


The "MAIN" data queue loads records from the tables (files) whether these are local tables or remote tables or some of each. The MAIN queue has several governors with which developers can control the number and selection of records being displayed.

In principle, the MAIN queue is filled with records in batches, determined by one or more of the filtering methods or record-count limiters provided as part of LBX or by associated _LBX filtering templates.


The "SHADOW QUEUE" on the other hand, is only ever filled with a subset of records already available in the MAIN QUEUE, never from the data tables. This provides a filter-within-a-filter system that lets users drill down to smaller and more manageable data sets without having to constantly go back to the data tables to refine their queries. This is especially advantageous when data tables are remote.


LBX Built-In Locator

ListBoxBrowseExtender (LBX) Implements a Built-In Locator, column-specific filter Keyword override. See examples HNDLBXSQLEX.APP and HNDLBXDM.APP.

Note that the query filter keyword is now also incorporated into the explanatory DISPLAY() control provided by LBX templates to let the user know when the filtering keyword changes from one column to the next. The example applications provide ample illustrations of this on various procedures which illustate querying by built-in locator only as well as querying by built-in locator combined with _LBX add-on querying controls.

LBX Edit Hot Keys

ListBoxBrowseExtender (LBX) Now provides 3 default edit hot-keys on the template's "List Box Properties" -> "Format" Tab. These keys are CTRLENTER, ALTMOUSELEFT and MOUSELEFT2.

LBX ListBox Auto Size

ListBoxBrowseExctender (LBX) examples all illustrate the use of CHT Resize templates, ResizeHandles and/or ResizeHandlesControl to determine the width and height of the listbox.

Note that in our demo LBX applications, we do not, in most cases, display any controls below the listbox control. This lets ResizeHandles automatically size the listbox to within 5 pixels to the left, right and below the listbox, of the window edge.

In two example procedures we display a child browse, however, below the parent browse. Changes that accommodate doing this have been introduced to the two resize templates as explained below.

ResizeHandles (RSH) and ResizeHandlesControl (RSHC) templates now have an extra "Max Height" property on the "Resize" tab. This property, if left set to zero, does nothing. Since it's default value is zero, this setting does not override the expected behaviour in any app currently already using ResizeHandles and ResizeHandlesControl templates, thus avoiding any sizing surprises.

When set to a non-zero value, by the developer, this setting controls the vertical height of the list box.

You will find these two template illustrated with non-zero Max-Height values in some "LBX" applications -- HNDLBXSQL.APP, HNDLBXLBXEX.APP, HNDLBXDM.APP, HNDPEOPLE_LBX.APP. Here, they control the listbox height on a stretchy window where another control is populated below the parent listbox.

June 11, 2019
Build 23B.02.00 Released
LBX Changes

ListBoxBrowseExtender (LBX) will now respond to MouseLeft2, a browse double click, to open the update form when the browse also implements LBX child template UpdateButtons_LBX.

Since prior LBX browses did not require the IMMEDIATE property for the browse control, it may be necessary for you to manually check the IMMEDIATE property for the list box, in the Clarion Window editor.

Alternatively, you can ask LBX to regenerate the list box control from the "List Box Properties" dialog by checking the regenerate box on the "Format" tab and following the instructions provided there. That also will place an IMM (IMMEDIATE) property on the listbox as required by the MouseLeft2-to-edit feature.

ListBoxBrowseExtender (LBX) will now warn you about not placing Clarion internal icons (eg: ICON:Asterisk, ICON:Exclamation) on LBX dialogs having to do with browse control icons. LBX will only accept disk-based icons.

Once a disk-based icon is placed on LBX, a full-regenerate of the app, will link the icon into the application by finding a slot for it on one of the ApplicationImagesEx (AIEX) "Internal" tabs and checking its "Include" switch, or if these slots are all full, by linking the icon directly into your app without further effort on your part.

AIEX Changes
ApplicationImagesEx (AIEX) icon-include dialogs have all been made to similarly refuse to accept Clarion's Internal icons (i.e. ICON:XXXX).

HFS Changes
HandyFileSelector (HFS) will now permit you to disable or hide file location controls from the template. This provides for limiting where the file selector looks for files and which files it finds. The same feature can also be programmatically switched in and out, if doing it from the template is too restrictive.

Example application HNDLBXSQL.APP illustrates the above points, having to do with double-click to edit and the placement of dynamic icons on an LBX browse.


XML2HTML™ related menus disappear unless a XML2HTML™ style template is loaded.

An upload configuration menu added to CHTSNAPEDIT.EXE. This configures to enable uploading to your CHT webserver. The actual upload feature, when completed, will work as a pass-through from generate so that the generated HTML can be generated, uploaded and previewed from a remote target server with a editor single keystroke.

Upload will also work as now, as a more manual, but on-demand feature, so that generate and preview are performed locally followed by an upload-to-server when the HTML is ready for the website.

An XML2HTML™ on-line document has been started, though this will be a long one and will take a month or two for me to compelete. It is available from the editor help menu - top item.

The built-in CHTSNAPEDIT.EXE previewer, (F7-key) has expanded features this build.

Look in \accessory\hnd\xml\for working example page-production templates.

Some examples to look at for static web page production:
  000index.xml is our own HOME page XML2HTML template
  000about.xml is our own ABOUT page XML2HTML template
  000news.xml is our NEWS page XML2HTML template
  000support.xml is our SUPPORT page XML2HTML template

Just to name a few....

What makes these XML files "TEMPLATES" as opposed to, well, just regular XML files? The difference is "Embed Points" into which you can insert text, images, and other content that you would like rendered as HTML. Our on-line help document link is here: XML2HTML™ Docs

Open "000index.xml"; it will attach itself a tab in the editor, and follow along to get an overview of how this works.

<PageTitleTextA> </PageTitleTextA> Contains the browser window title.

<PageTitleOverLay> </PageTitleOverLay> Contains top-of-header page title.

<CHTPageHeaderMenu> </CHTPageHeaderMenu> Contains page relationship links.

<PageTitleOverLaySub> </PageTitleOverLaySub> Contains bottom-of-header sub title.

<HeadArea1A> </HeadArea1A> Is part of a 2-part set with <MessageArea1A>

<MessageArea1A> </MessageArea1A> This 2-part set is combined with <HeadArea1A> and provides a set of 100 separate hand-embed or programmatic-embed insertion points that display at HTML rendering time from largest number to smallest number.

In other words, <MessageArea9A> text displays before, meaning lower in the page than <MessageArea7A> text. The numbers do not need to be consecutive, to be displayed correctly.

For example, with only two sections completed, say, <MessageArea5A> </MessageArea5> and <MessageArea2> </MessageArea2A> they will still display correctly, in the HTML preview with <MessageArea5A> </MessageArea5A> text displaying first, bottom of page and <MessageArea2A> </MessageArea1A> last, top of page.

These sections also can be placed inside the XML template in any order, largest to smallest or smallest to largest and the text inside the embed tags will still display largest number first, (bottom of file) and smallest number last (top of file).

To move any section above the other, higher on the page than the other, it only needs to be given a lower number than the other, though not necessarily numerically sequential to the other.

That's all for this 23B.02.00 update. Keep an eye on our June/July What's New pages for more XML2HTML updates, documentation and examples.

June 1, 2019
Build 23B.01.09 Released

XML2HTML™ Editor Enhancements

CHTSNAPEDIT.EXE Version 23B.06.2019 has been reworked to provide three different preview methods:

F5 = Generate and Preview as HTML with CHT (Clarion) Previewer

F5 loads the HTML for preview into HNDPREVIEWER.EXE as before.

F6 = Generate and Preview as HTML with your Browser

F6 loads the HTML for preview into your DEFAULT PC Browser.

F7 = Generate and Preview as HTML with CHT (C#) Previewer.

This loads the HTML for preview into Snapedit XML2HTML™ previewer.

XML2HTML™ Other Enhancements

Editor Window Size and Position

The editor window now re-opens in the size last closed, and at the X,Y position last closed.

HTML, CSS, XML, Javascript, COLOR, CHARACTER Help Menu

The editor "Help" menu now provides web-links to useful help pages with information to HTML, CSS, XML, Javascript, COLOR, and CHARACTER help.


Cut Embed Section Ranges
Re-Number Embed Section Ranges
Cut (remove entirely) the CSS Style Sheets Section
Select from disk to replace entirely the CSS Style Sheets Section
Reset all body embed points to empty


Jump to web-based help with HTML, XML, CSS, Browser Support Charts, UTF 8 Character chart, HTML Color Names, Javascript


Convert UTF 8 Latin 1 (161-255) to HTML Symbols
Convert HTML Symbols (161-255) back to UTF 8 Latin Characters


<PageMetaDataComplete> </PageMetaDataComplete> provides the entire meta data set for the generated page instead of the default set normally inserted by our XML2HTML™ parser app HNDXML2HTMLGEN.EXE

Upcoming Features:

Upcoming releases (June, July, August 2019) CHTSNAPEDIT.EXE XML2HTML parser entirely written in C#, will provide faster translation to HTML from XML as well as a full range of character conversion for the following:

UTF-8 Latin Extended A Range: Decimal 256-383
UTF-8 Latin Extended B Range: Decimal 384-591
UTF-8 Greek and Coptic Range: Decimal 880-1023
UTF-8 Cyrillic Range: Decimal 1024-1279
UTF-8 Cyrillic Supplement Range: Decimal 1280-1327

MORE NEW [OPTIONAL} embed areas and code substition areas into which your CHT Server app can place generated HTML at server operation time.

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