Clarion Handy Tools
March 2017

March 31, 2017

Build Release 21B.00.00 Posted

At 9:00 AM Friday March 31th, 2017 we completed posting CHT Build Release 21B.00.00.

Study the postings below to find out what new and changed features are available in this build. Further details will appear in our April 2017 What's New Page.

We will also mail, as usual, our Build 21B.00.00 Facts Sheet by mid-week, April 5th, 2017.

Gus Creces
The Clarion Handy Tools Page

March 31, 2017


March 30, 2017

HNDPEOPLE_LBX.APP Commentary and Images

The following commentary is in advance of our next update (21B.00.00) scheduled for MARCH 31, 2017.

We've added numerous features to ListBoxBrowseExtender (and related LBX templates) for this build and we're able to create an app (for example: HNDPEOPLE_LBX.APP) consisting of browses and forms. This application uses no NO ABC BROWSE templates.

The app is "dual-data-source". Some of the the data (in 4 procedures) comes from a local HNDO.TPS file and some of the data (in 2 procedures) comes from a remote data source located in the MONTREAL CANADA area, where my rented co-location server hardware is located.

We're using as a REMOTE DATA source, an existing CHT Server Application called HNDCLIENTSVLEAN4VIEW.APP, which also looks at HNDO.TPS located remotely beside the CHT Server app.

We did add a PHONES view to the HNDCLIENTSVLEAN4VIEW.APP for the purposes of this HNDPEOPLE_LBX.APP example, but the PEOPLEVIEW procedure is unchanged from the example you have presently.

Here we will discuss briefly the operation and construction of the REMOTE DATA procedures of HNDPEOPLE_LBX.APP. This app is entirely template built and all procedures are HAND-EMBED-FREE with the exception of one. The "MAINPROC" procedure at this point still contains some hand embeds to initialize the REMOTE DATA login functionality and to hide and unhide the two remote data procedures when not logged in to HNDCLIENTSVLEAN4VIEW.APP.

Some time in late April/early May 2017 we will provide at least two or three on-line workshops at different times of day to show you how to build LBX browses (local and remote) as illustrated in this example. If you're interested in attending either, or both of these, send us an email at indicating your interest and what day of the week and time of day (your time) works best for you. We will try and accommodate the DOW and TOD's you request and get back to you with the workshop specifics. We're experimenting with YOUTUBE LIVE STREAM and will use that if I'm able instead of GoToMeeting.

Here now is the HNDPEOPLE_LBX.APP in pictures with commentary.

This first screen shot is the main procedure's menu when the app is first opened. The REMOTE LOGIN menu appears in red. Only Local Data browse procedures are visible at this stage.


The next image shows the main procedures menu AFTER the LOGIN PROCEDURE has been performed. Not that now both Local Data and Remote Data procedures are visible once the REMOTE DATA login has been performed.


In the third image you see a screen shot of the Clarion IDE's procedure tree. Note that NONE of the browse or update procedures show the little red dot that indicates hand embeds. There are only hand embeds, as we noted above, in the MAINPROC procedure. The rest are all template-generated code.


The next image illustrates a basic remote-data LBX procedure created with the same PROCEDURE template that created all 6 browse procedures in this app, namely:
ListBoxBrowseExtenderClientServerBrowse template.


The next image illustrated a dual, related set of LBX browses. The window and the PARENT BROWSE were created with CHT's ListBoxBrowseExtenderClientServerBrowse template. The lower, CHILD BROWSE was created by populating these components separately as indicated on the image.


The above two procedure windows, respectively, look as follows when you run them. First the full window remote browse displaying only the PEOPLE file.


Next the dual, related LBX browses displaying the PEOPLE file and, below, the related PHONE records for individual PEOPLE records.


Later this week we'll post the template settings for these two browses, and explain what each of them does.

That's all for today on HNDPEOPLE_LBX.APP remote data browses.

Gus Creces
The Clarion Handy Tools Page

March 30, 2017


March 21, 2017

HNDPEOPLE_LBX.APP For Next Build Remote Data LBX

In the 21A.03.02 build (the one now in your possession) there is a remote data browse but it is hand coded.

In the 21B.00.00 build slated for March 31,2017 the ListBoxBrowseExtender template has been advanced so that this remote data LBX can now be achieved without embeds.

This image shows the LBX template dialog called "FillFromCHTServer":


This next image shows how the template dialog was completed. Two important bits of information are provided:

#1 -- The CHT Client Server View Name (PEOPLEVIEW)
#2 -- The global HNDCLIENT instance applied to this app (HCLNT)

The server in use here is an already existing CHT server app called HNDCLIENTSVLEAN4VIEW.APP which has a view on it (among others) called PEOPLEVIEW.


The remainder of the work performed on the LBX template is identical to the work performed on building a local data LBX browse.

So a local LBX browse could be readily turned into a REMOTE LBX browse simply by configuring the FillFromCHTServer dialog on the template. One or all of these FillFromFile, FillFromView or FillFromCHTServer template dialogs can be completed at the same time. So that the browse could be programmatically switched from local data to remote CHT-Server data with say a checkbox switch somewhere on the app.

Since our app has a global instance of the HNDCLIENT class, once you sign on to a remote CHT Data server that server can be accessed without going through the login procedure again.

In this case we've populated the LOGIN procedure on the MAIN window, as in the accompanying image.

Clicking this menu pops up a login dialog for the server in question. The menu below manually disconnects the server session or simply exiting the app, automatically disconnects the server session.



This login screen is part of a CHT HNDCLIENT object's configuration code. This I've hand embedded into the MAIN procedure of HNDPEOPLE_LBX.APP. (This code will be template-generated by the time you get the next build).


Another thing left to do here with this REMOTE DATA LBX procedure is to illustrate the same PARENT/CHILD relationship between PEOPLE and PHONE that we illustrated in our earlier post with a LOCAL DATA procedure, that's easy enough because it involves the same set of template configurations. Coming also next build is an LBX update procedure template for REMOTE DATA editing, deleting and inserting.

Gus Creces
The Clarion Handy Tools Page

March 21, 2017


March 20, 2017


We've been pushing forward on fleshing out some of the still-to-do pieces in ListBoxBrowseExtender as you have this presently in Build 21A.03.02. There are several new LBX control templates as well as changes to the ListBoxBrowseExtender (LBX) template itself.

Here, we want to illustrate only one new, improved capability that has made it into the template as of the next build (21B.00.00) scheduled for March 30, 2017.

In the build that you have, (21A.03.02) it is possible only to place one LBX per window as the template was set to SINGLE which stops the IDE from allowing a second LBX on the same window.

In the upcoming build (21B.00.00) it will be possible to populate more than one LBX on a given window. The template has been re-configured as a MULTI. And as a consequence all of the related control templates have been given this MULTI quality as well so that, for example you can have more than one UpdateButtons_LBX template on a given window. (I.E. one set of browse update buttons for each LBX browse on the window). The same MULTI applies to other LBX related control and extension templates.

We've added a procedure to HNDPEOPLE_LBX.APP to illustrate this. And have taken that one step even further such that the browses can be given a PARENT/CHILD relationship in the same manner that you can give PARENT/CHILD relationships to ExplorerBrowses and HndMarkerBrowses. (See next two images)

This image shows inside the red rectangle, what the procedure is called and how it uses two separate update form procedures:


This image shows one of the template interface tabs on the lower browse to illustrate how, on the template interface, the two browses were joined into a PARENT/CHILD relationship.


This next image shows the two LBX browses, in action. The top browse navigates the PEOPLE file while the lower LBX displays only the PHONE records related to the selected PEOPLE record in the upper browse.


Note that both browses provide update buttons with which to Change, Insert and Delete records from their respective tables (files).

As you scroll up/down on the upper browse, the lower browse displays the related phone records. Since the lower browse has been told to optionally load ALL PHONE records. No further file access is necessary to short list the phones for a given PEOPLE record as you slide up and down on the PEOPLE browse.

This "no-further-file-access" feature is a very important feature which will pay tremendous dividends when it comes to setting up a browse like this that uses REMOTE, server-located data instead of LOCAL data.

All of this functionality involves ZERO hand-embeds (That's right, NO HAND EMBEDS!). As you can see in the first picture, there are no red dots beside the procedure we're discussing.

That's all for now on this aspect of the HNDPEOPLE_LBX.APP.

Gus Creces
The Clarion Handy Tools Page

March 20, 2017


March 19, 2017

C10 DCTINIT Error, Easy Fix

Chances are pretty good, that from from time to time you've encountered an error of the sort illustrated in the accompanying image:


This is an indication, that for whatever reason (generation error perhaps), the .OBJ file listed in the error is missing a reference.

The only way, in the past, that we found to fix this was to somehow get the .APP "Force Regenerated". In other words, to get all of the gen-code that the app produces to regenerate from scratch and then to cause that regenerated code to recompile. The IDE's "Clean Application" or "Clean Solution" menu used to, in the past, cause a sufficient code regeneration to fix the error. But not these days with the latest C10!

The most reliable way we were able to find to remeditate this error, until recently, with HNDCLEAN.EXE, was to close the .APP and to exit Clarion 10. Seems idiotic, and extreme, but hey, it worked every time, because once you exit Clarion 10 any app you load after that is marked for full regeneration as soon as you ask Clarion 10 to generate and compile.

Over the years, as we "progressed" from C7, to C8, to C9, to C9.1, to C10, SV has tightened the restraints on regeneration. Nothing regenerates that shouldn't need to regenerate, and that makes sense. SV sells that to us as "faster app generation", which is also appealing since nobody wants to wait around for a BIG app to regenerate, especially when it doesn't have to fully regenerate because its developer may have touched only one small module or procedure.

The problem is, with C10, as we see it, SV have gone overboard with the tightening of regeneration constraints, to the point that modules or procedures which you HAVE touched won't regenerate unless you DO GO TO THE EXTREMES we mentioned above - like exiting and reloading the .APP or making unnecessary comment-embeds in certain modules so that the IDE detects your change and forces at least a partial regeneration.

The DCTINIT error above is of global scope and requires a full-regeneration to fix. That's why we found that exiting Clarion 10 and reloading the .APP to be the quickest solution to getting a full-regeneration of the app.

Until now. Now, we run HNDCLEAN.EXE, which we've configured, as in the image below, to the C10 Tools menu. (See next image)


We only have to click this menu and then the IDE's Generate/Compile button and the error goes away reliably because the .OBJ file presenting the error is erased by HNDCLEAN.EXE as are the various generated code modules. And a full recompile from freshly generated code is "forced".

A real time and frustration saver, that HNDCLEAN utility!!!

Gus Creces
The Clarion Handy Tools Page

March 19, 2017


March 1, 2017

Hello CHT Developers! We're taking a few days of "Winter Break" so there won't be any March News until after March 9th, 2017.

While you're waiting for our hectic development schedule to resume, please make sure you're caught up with what we've already done so far this year by visiting our January 2017 and February 2017 What's New pages.

CHT News Index Page

February 2017 was a particularly high activity time as we began acting on the plans laid out in this document:

CHT 2017 Development Plans

So in case you missed it, please make certain to review, in particular, the dev work we performed in February 2017.

February 2017 News

While we're on our "Winter Break" period we will be monitoring our email to fill orders, and answer questions. And we'll be reading, and posting, on the CHT Support Forum as usual.

Back with you here, by March 10, 2017! See you then.

Gus Creces
The Clarion Handy Tools Page

March 1, 2017


The Latest Docs

(Regenerated Monthly)

The latest template documents (HTML) are here:

CHT Template Docs

The latest demo application docs are here:

CHT Application Docs (Complete)

The latest utility application docs are here:

CHT Utility Applications Docs

The latest BATCH-BOT application docs are here:

CHT Batch-Bot Application Docs

The latest SNAP-IN application docs are here:

CHT Snap-In Application Docs

The latest classes docs are here:

CHT Classes Docs