cht_january2007.gif

January 26, 2007

New Template "DontShowThisSplashAgain"
Didier Le Duc asked us if we could make the splash screens on some of our often-used utilities like HNDCMP, HNDZINDEX and HNDFSYNC go away. Since he uses these so often, he finds it a pain to have to click them out of the way each time he uses them.

We've just created a new Control Template called DontShowThisSplashAgain that you can drop on any ABC splash screen or CHT Jumpstart-Initiated Splash Screen. There are no prompts to fill out, just drop the template on the splash screen window and position it where you want.

Then when the window opens, click the checkbox so that it becomes checked. The splash will stay away. We've applied this to the apps mentioned above: CHT Compile Manager, CHT Synchronizer, and CHT Installation Tuner.

Here is a screen shot of the splash screen before the checkbox is checked:

splash001.gif

The window closes as soon as you check the switch. To make the window go away ordinarily now will take a doubleclick.

The template appears in the extension templates list as follows:

splash002.gif

The template interface requires no configuration. It has the standard help buttons of all CHT templates.

splash003.gif

Of course, the question remains, now how do you get the Splash screen to come back?

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 26, 2007


January 25, 2007

OMNIDRIVE Publishes API
OmniDrive has published its API. So it looks like this portion of our plans for 2007 will go ahead as forecasted. The API is being made available in the form of Win32 DLLs as well as a COM client for interop with .NET.

Here is a link to the latest information about the OmniDrive API

It is our intention to create initially a HANDYCOMOMNIDRIVECONTROL template and class wrapper for the OmniDrive COM client. While CHT doesn't make a practice of interfacing development products for which you still have to pay, beyond keeping up your CHT subscription, with this product we'll make an exception since we've found no more cost-effective way for you to access mass, virtual storage off-site and incorporate access to it easily from inside your applications.

We'll keep you posted as this develops further.

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 25, 2007


January 24, 2007

New CHT Template - INITableIOProcedure
We've just completed writing and testing a new template called INITableIOProcedure.

This template creates a procedure that accepts I/O redirection from the ABC INIClass and the CHT HNDIni class. In other words, instead of your application configuration settings going into an .INI file or to the registry, you can save them to a data table defined in your dictionary. The advantage of this in networked environments and the CITRIX environment, is obvious, since the configuration settings are not local to the machine on which the user is working the way INI and Registry saved configurations tend to work. As long as your INI/Registry code uses the ABC class syntax - which ABC templates and classes do - or CHT HNDIni class syntax - which CHT templates and classes do, then no code changes are required in order to redirect PUTS, GETS and REMOVES to this new procedure. Here they are written to, retrieved from and/or deleted from your dictionary-defined data table. To see this in action we’ve modified HNDSQL1.APP to incorporate this feature. A new data table is available in this application’s dictionary called INITable. The design of this table is not cast in stone, so you can add fields if you wish. The fields we’ve added and at least the no-duplicates key on the field called Unique must be present and of the same data type. The field names don’t matter since the template asks you to select field names.

Creating An I/O Procedure
Your application only needs one I/O procedure. Here are the steps:
• Import INITable to your dictionary from our HNDACESS.DCT. Modify as needed for your back end, ISAM or SQL.

initabledef.gif

• From the procedure tree, select Procedure -> New
• Name your procedure and select IniTableIOProcedure(HNDTools) as in the image below.

initableio.gif

• Select INITable into the Table Schematic as illustrated.

initableschematic.gif

• You will need to save this back by hitting OK and clicking the generate module button. At that point right click and open the procedure properties which look like this.

initableprocprop.gif

• Click the Files button and configure as below. Obviously, you will want to configure for "Read/Write Deny None" if other people are going to be using the app and accessing the same configuration file.

initablifiles.gif

• Click the Fields button and configure as below.

initablefields.gif

Because you select fields in this way, the layout of your configuration file is fairly flexible. You can have more fields and the string fields may be larger or smaller. The one inflexible design feature is a ULONG field with a non-duplicate key. This field carries a unique signature (CRC HASH) of the tag data (USERID, SECTION, ENTRY and FILENAME) of the record you're adding, fetching, changing or removing, so that fetches can be performed on a single numeric key. This improves access speed and application response.
• At this point your procedure is complete and should compile. The procedure profile looks like this: IniTableIOProcedure PROCEDURE (BYTE xIoType, STRING xSector, STRING xName, STRING xValue, STRING xFilename)

Code That Calls Your I/O Procedure
Note on the procedure properties image above that this has been tagged Declare Globally by the template. That makes the procedure visible to your entire app and to some template-placed embeds that our HNDINI template will place to direct INI/REGISTRY IO requests through this procedure. In fact, you could call this procedure directly in your app, but we suggest you don’t do that since you can use standard ABC INIClass syntax as follows:
INIMgr.Update(‘CONFIG’,’MyTag’,’SomeValue’)
MyVar = INIMgr.Fetch(‘CONFIG’,’MyTag’,’DefaultValue’)
You can also use standard CHT INIClass syntax as follows as long as the CHT INIFile template has been added to the Global Properties of your application.
HIni.PutIni(‘CONFIG’,’MyTag’, ‘SomeValue’)
MyVar = HIni.GetIni(‘CONFIG’, ‘MyTag’, ‘DefaultValue’)

All code of this sort, generated by ABC templates and CHT templates will automatically, without you doing code re-writes to cause redirection of INI I/O to the table you've designated on the INITableIOProcedure. If your app contains any embeds using standard GETINI and PUTINI calls these will need to be changed to use ABC IniClass calls or CHT IniFile calls as illustrated above.

Configuring CHT’s INIFile Template To Invoke Redirection To Your I/O Procedure
The final step is to configure CHT’s INIFile template on the Global Properties of your application. If your application is already set for either INI or Registry configuration you can leave that as is. No need to change the ABC application settings. ABC at present does not provide an option to redirect to a data table. Our demo app was originally set to save to the Registry and we left the ABC Global Properties non-volatile settings this way. See the next image.

initableglobalprop.gif

• First navigate to Application -> Global Properties -> Extensions -> INIFile. add this template if it’s not already there. Once in place it looks like this.

initableglobalext.gif

• Next navigate to this template's INI Data To Table dialog, illustrated below.

initabledatatotable.gif

• Check the switch INI Data To Table
• Select your new INITableIOProcedure in the dropdown provided.
• Ignore the following field if you like or enter a constant, equate, variable or function call that contains or returns, a unique value representing the user working with the app. Making this value user-specific ensures that the same application, even if run on the same hardware performs separate entries for each user in the event they like their window positions and configurations to be unique to themselves. This value can be changed in code anywhere in your app using the CHT HNDIni class which is visible to your entire application. The code to do that - say once someone signs into the app - is as follows:
HIni.SetUserID(YourValueVariable)
HIni.SetUserID('George')
HIni.SetUserID(123456)

The main thing here is consistency so that each time George starts the app, his configuration is found. If multiple users across a network each require a unique configuration you'll need to ensure this is universally unique. If this HIni.SetUserID(SomeValue) is not changed on a user basis, the configuration is application specific, not user specific. Application specificity is determined by the INI file name applied or the registry destination key applied.

When your app uses an INI file an INI file name plus a path are provided by the ABC template. The name of that file determines where the config information is stored. Generally these INI file names are unique to a given application.

The same applies when you set your application to save to the registry. A registry key is provided on the ABC template or on CHT's AAACHTControlPanel template. That registry key determines a unique location where your app saves it's information. That same principle still applies when you've redirected INI I/O to a file or SQL table using this INITableIOProcedure template. The INI file name or registry key configured on the app is used as part of the HASH value that determines uniqueness for any entry, so that even without a USERID to make the entries user specific, the ini writes produced by any app are still application specific and can be traced back to that application.

We'll keep this template on BETA status for a month or two to allow you to give it try and report any problems. In the meantime, I'm going to configure the entire set of CHT SQL demo applications HNDSQL1.APP -> HNDSQL6.APP using a data table instead of an INI file or the registry.

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 24, 2007


January 18, 2007

CHT Zip Functionality Gets CHT Query Language
If you've followed some recent CHT forum discussions, and earlier requests from Johan De Klerk, this posting should satisfy those discussions and Johan's request to have our ZIP functionality incorporate the ability to search for files using CHT Query Language.

I've done that now and have modified the zip-related demo apps to incorporate that modification using a new template called EmbedZipQueryParserFunctions. This is a child template of HandyComZipperControl, which means you need to attach this extension template by touching HandyComZipperControl in the Extension and Control Templates list and then right click to see EmbedZipQueryParserFunctions listed - and consequently to select it. The image below illustrates that:


embedzipquery01.gif

Unlike QueryParsingFilterControl, this is an Extension Template not a Control Template so you need to supply your own query string and query control by way of an ordinary entry control. The template interface is as follows:


embedzipquery02.gif

The Query Keywords dialog is the same one you see in all CHT Query Language dialogs. You should be familiar with this by now. Here you can customize CHT Query Language itself and even translate it into your own native language, if you prefer.

The Query Reference dialog simply wants to know the variable you've created as a local string or cstring to contain the query being typed into the query control. In this example I've called that string simply, "Query" as you can see in the following illustration:


embedzipquery03.gif

The ParseQuery Trigger is a local control like a button, which on being accepted, causes the CHT Query Language to be translated into Clarion so that it can be EVALUATED to determine whether a file matches the query or not. In this example I'm using ?Button:Zip to do that. When this button is clicked, the query is translated and the zipping process is started all on the same accepted event.


embedzipquery04.gif

That's pretty much it. Try out one of the apps. This one happens to be HNDZIPNPOSTTOCHTSERVER.APP. Follow the instructions at the top of the app's only window and experiment with a file query. The file mask is still used. You can enter a legal file mask and the files found will incorporate that file mask. Or you can enter *.* as your mask and formulate your query 100 percent as CHT query language. See the illustration below for an example:


embedzipquery05.gif

The default search field names are PATH, NAME, DATE, TIME, SIZE. These are English words which, if you wish to change them, are defined in the CHT translation file. Look in the HNDDisk section for SELF.FB_PARSERBINDPATH and similar variables if you want to affect a translation to your native language in the field name portion of your queries. The query language verbs, CONTAINS, ENDSWITH and so on, as well as short forms, can be changed directly on the template's Query Keywords dialog in the standard manner of all CHT Query implementations.

These changes have been uploaded and are immediately available from WEBUPDATER.

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 18, 2007


January 17, 2007

Decision Made! .NET Interop Coming To CHT For C6/C7
With last night's WEBUPDATER update you'll find that the "Ship Support DLLs" tab on our AACHTControlPanel template looks different. I've added tabs, to indicate the source of DLLs that your application may require depending on templates added to the application.

With the next update, a new tab will appear there called "Microsoft .NET". This tab will list CHT .NET COM Interop DLLs as discussed in an earlier news posting and as outlined also on our .NET COM Interop

The first such .NET COM Interop DLL to be released is an SMTP email dll - something CHT really doesn't need all that much since we've got lots of email functionality already. I did that to ease myself (and you) into the .NET Com Interop era, since I'm comfortable with SMTP email and most of you are too, we can use this to explore some of the potential of .NET together without straying too far from our comfort zones and also have a standard, non .NET implementation to fall back on. I'll also provide a page on our website soon to explain how to get the Microsoft Framework 2.0 installed on your development machines and on those of your customers. There's not much too it. Your first reaction may be, why set myself up for more Microsoft DLL hell? In fact, the exact opposite is true once you get on to it. Since you don't have to think about specific DLLs at all, you just need to install FrameWork 2.0 and you're done. Eventually with Vista, even the need for doing this Framework installation will go away.

Some of the new functionalities that hook operating system capabilites, coming to CHT in 2007 and announced earlier, will be implemented only using .NET COM Interop technology. From a Win 32 app, I'll be able to give you O/S features - like say, building Vista Widgets, XP ToolBars and other cool stuff - which you won't get any other way until you move entirely to Clarion .NET. Or you switch your development to Visual Studio - and we don't want you doing that!

There's no easier, more efficient or faster way for me to give you new stuff than via .NET COM Interop. My ultimate goal is to get you guys using more and more of CHT and fewer other 3rd party templates and classes. Why? You'll find out soon enough as you try and migrate your apps forward to C7 and someday perhaps to Clarion .NET. The more 3rd party stuff you have on your apps, the harder your migration will be. I don't want to be a party to holding your applications back. Stay tuned.

Here, BTW, is what the "Ship Support DLLs" dialog will look like in upcoming updates.

supportdlls.gif

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 17, 2007


January 10, 2007

Clarification Of Our Motive For Introducing .NET Interop
For all that responded to Clarion 7 and .NET Interop, here is a clarification of my point, which perhaps was not really clear, judging from most of the responses.

.NET cannot be avoided, nor should it be. It's where we're all headed in Windows programming whether we're prepared to admit it to ourselves or not.

And at such time SV gives us a Clarion .NET, I'll be more in a position to determine and outline the shape of Clarion Handy Tools .NET.

But what I was getting at in my Clarion 7 and .NET Interop - Your Thoughts? posting was not to provide a way for you to learn .NET. Nor was I proposing a replacement to help you forever avoid using the .NET version of Clarion. Nor is this a way to produce .NET assemblies with C6/7 as one respondent took it to mean.

The point of that posting was to determine if it would be useful to CHT users if I gave you a way of advancing your existing C6/C7 apps to include some of the capabilities of the .NET libraries, without having to port your apps to Clarion .NET to obtain those capabilities. I think I made it clear enough that these .NET libraries would interface to C6/7 like COM objects not like .NET libraries. So from the standpoint of .NET understanding, there is little, of that provided in this proposal. About the only .NET learning to be had from this concept is the requirement that you most definitely need to learn about the installation and maintenance of the .NET Framework. Since the .NET libraries don't ship by default with XP, you have to install at least Framework 2.0 on any PC that's going to access .NET libraries. Windows VISTA, on the other hand, is shipping with Framework 3 installed so even installation isn't necessary there.

The Windows XP operating system and even more so the Windows Vista operating system is chock full of functionality that Clarion users cannot natively and easily get to with Clarion Win32. A major portion of CHT as it is today, deals with that issue of exposing operating system functionality. I could use an iceberg analogy. The visible part of CHT that you deal with on a daily basis is backed up by a huge set of libraries that leverage the operating system. In the past, whenever I've provided an "interface" to these O/S functionalities it has been via Windows API or Windows COM. Well guess what, as the .NET aspects of the Windows O/S evolve further and further, the traditional PASCAL style Windows API is no longer fully exposing the newer operating system features!!!

What I've really been saying is that Win32 (Clarion 6/7) as a vehicle for application delivery remains static, stuck in time, and progressively less able to leverage newer operating system features. And the disparity between what Win32 can reach and use and what it can't, is growing more rapidly than you might imagine. My Point: the life of your existing Win32 apps and your ability to leverage new operating system capabilities with those apps, without a difficult, costly and time-consuming port to .NET can be extended if CHT were to expose some key aspects of the .NET underbelly, using COM interop.

If it turns out that PORTING existing C6/C7 applications to Clarion .NET is not difficult, costly or time consuming, and a viable Clarion .NET appears in 2007, then what I'm proposing here is probably not worth doing.

If PORTING existing C6/C7 apps to Clarion .NET is as thorny an issue as porting from the Clarion template set to the ABC template set turned out to be with Clarion 4.0, then my guess is there are a lot of developers out there who would be well served by my proposal to let them hook into some .NET features and thus extend the working life of their existing Win32 applications. Ultimately, they would still need to make the leap to .NET if they expect their applications to remain viable in the next decade. My proposal would perhaps buy their application another 2, 3 or 4 years. Then, if they're smart, in the breathing space provided, they could get themselves up to speed building new apps in Clarion .NET without jeopardizing their incomes trying to port existing applications on which their livelihoods depend, before they're technically capable of meeting that particular challenge.

I hope that helps to clarify.

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 10, 2007


January 9, 2007

Some Thoughts On The Potential In CHT For C6/C7, Hooking .NET Libraries
In 2006 CHT delivered an unprecedented 38 new templates. And almost as many new class libraries. If you don't remember what they were you can check out this PDF: New Templates In 2006.

Part of that productivity was due to the maturing of some CHT internal technology having to do with COM Interop, not the least of which is our COM interface generator tool. This is the tool we use to build ABC-style classes that interface to Clarion and allow you to use Windows COM classes in a way that doesn't feel like the clunky Control property syntax introduced into Clarion with the advent of Clarion 2.0.

We've chosen not to release that tool as one third party vendor has done for the reason that even after generating a set of COM interface files (COMOBJECT.INC, COMOBJECT.CLW, COMOBJECT.TLB) a lot of work remains to build a Clarion-friendly set of methods that make the resulting code easy to use in the context of your .APPs and .PRJs. With our COM Interop code you really don't have to know anything about how COM works, except perhaps to make sure that the COM .DLL or .OCX being called is installed on your target system.

One of my target objectives, stated a year ago, was realized in 2006. But I've not said anything about it. For one thing, I'm not sure how to deliver the end product of this breakthrough. But I'm getting ahead of myself. More about that in a minute.

What do you know about .NET? Did you know that all .NET dlls provide the potential of COM Interop capability? If you re-read what I've said above, the real impact of how COM Interop can possibly impact your Clarion 6/7 apps will sink in. When Microsoft introduced .NET, one of their big considerations was to make all the new .NET stuff backward compatible with Win32. Their most-used compiler, the C++ compiler, still does not default to .NET mode - they call it CLR (Common Language Runtime) mode. The evidence of that is visible in these two screen shots of the configuration properties of an ordinary C++ application.

clr001.gif


clr002.gif

Microsoft's C++ compiler projects still, for the most part, default to Win32/Win64 mode not CLR mode. And you have to switch .CLR mode on if you want to use the .NET classes in conjuction with your traditional C++ code. Many Microsoft C++ developers have shunned .NET for a long time because it was so very different, but it appears with Framework 2.0 and now Framework 3.0 (and Vista) that they're beginning to see the benefits of incorporating .NET. Most are still not writing pure .NET apps with their C++ compilers. They're adapting existing apps and adding .NET functionality, for the reason that .NET functionality is now quite plentiful and it provides easier access to new Windows operating system features than do traditional C++ APIs. But they don't want to have to re-write the raw C++ parts of their apps that have been time-tested and are fully debugged and stable. After, all if it isn't broken, why fix it?

No such luxury exists for Clarion developers. We have Clarion 6 and 7 (Win32) and we'll be getting Clarion .NET. If you go wholesale into .NET with Clarion you'll be re-writing your old apps from scratch - you can count on that - because .NET is that different. To some extent, if your app is 100 percent Clarion ABC generated code, the templates may help ease the pain of your transition to .NET since the templates can re-write the generated code to accommodate the ABC.NET classes. My bet is that even if your app is 100 percent ABC with no embeds and no 3rd-party templates and classes, moving an existing app to .NET will be at least as painful for Clarion developers as was the transition from procedural code in Clarion 1 and 2 to ABC OOP code in Clarion 4 and 5. I suppose this is not an issue if all you ever do is write new applications. You can learn .NET and start the new apps from scratch without the pain of having to port your old stuff.

But who writes only new applications? If you have a software product, I'll wager you don't write a lot of new apps. You spend most of your time maintaining and expanding the exsiting ones. If you're working for a big outfit that has a large investment in existing applications on which they depend, again, I'll wager you spend most of your time maintaining and expanding old code. If you sell your time as a developer/consultant how much of your work involves only new apps and how much is revision and updating of old ones? Have I made my point?

With Clarion 7 and Clarion .NET you'll find yourself in a situation of having to choose between which product to use. If you're not prepared to commit career suicide, you'll opt to try and keep existing apps in Clarion 7 and perhaps begin to dabble in .NET with newer creations until you become at least as familiar with .NET as you are with ABC. Many Clarion developers, some of you reading this, haven't even fully made the learning transition from procedural code (Clarion 1/2) to ABC (Clarion 4/5/6). All Clarions up to and including Clarion 7 let you get away with mixing procedural code with OOP. That's because Clarion Win16/Win32 is a hybrid language as is C++. If the pain and suffering of Visual Basic 6.0 developers moving to .NET is any indication, I doubt that the transition to Clarion .NET will be much less painful. If Clarion .NET is truly DOT NET and not a serious compromise, it won't tolerate the level of procedural/OOP mixing that earlier Clarions have done. That means new ABC.NET classes, new ABC.NET templates, new .NET-style syntax and a lot of broken embeds and broken apps that need to be PORTED to Clarion.NET not simply opened with Clarion.NET and recompiled.

How long has .NET been available to the MS Visual Studio guys? Is it 5 or 6 years now? And still their C++ developers are transitioning to writing mixed .NET and traditional C++ applications. They are given the luxury of doing that by their compiler which provides for mixed traditional and .NET mode. Clarion developers probably won't have that luxury and will need to choose one or the other: traditional (Clarion 7) or .NET (Clarion .NET).

So now I'm back on the point of this article. Yes .NET is powerful and desireable because it lets us gain access to operating system capabilities far more easily than traditional Win32 API ever did. But .NET does not come free without some baggage of it's own, not the least of which is the burden of transitioning existing applications that need to work in the context of the newer, richer .NET and Vista environments without a complete and costly re-write. Well that's where COM Interop can play its part.

As I've already mentioned earlier in this article, to make .NET backward compatible with Win32, MicroSoft built an optional, interoperability layer into their .NET classes that allows them to be made visible to traditional Win32 code as COM objects. Pure .NET compilers (VB.NET, C#.NET, and probably Clarion .NET) don't/won't use .NET libraries this way, but C++ in mixed mode does use them that way.

Is a picture of greater possibilities for Clarion 7 and your traditional applications emerging yet? It should be. Because that's a possiblity CHT is offering you: .NET interoperability using Clarion 6 and Clarion 7 without having to make the wholesale transtion to .NET and without the significant transition cost and learning curve. You will have to learn how to install the .NET Framework on your own hardware and your customer's but that's about it. If nothing else, the exercise of becoming .NET Framework aware will prepare you for Clarion .NET since it will certainly need that Framework correctly installed on your hardware and your customer's hardware.

This awesome possibility exists with CHT today. It isn't pie in the sky or something to dream about. I've been working on this off and on since last April when I posted my "Tell Me What You Think?" article on the CHT forum. The question remains, will you find .NET in C7 useful? And I suppose you can't answer that unless I give you something to try that you can comment on. In fact, I've already done that. If you're using any of the CHT COM templates and classes introduced in 2006, you've had a taste of what I'm talking about. These are traditional Windows COM interfaces, mind you, but to your Clarion app and to you, the .NET library functionalities can be exposed the same way and will look and feel and work the same way using a CHT COM Interface Class and Template. The PDF file linked above can remind you of what those 2006 COM templates are.

Given the lack of response to my December 20th posting CHT, Clarion And The Year Ahead - sum total 4 responses - I'm not sure what to think. Does anybody out there give a damn about .NET interoperability in C7 or not?

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 9, 2007


January 1, 2007

CHT, CLARION And The Year 2007
If you go back and read the CHT Forum thread for May 10 - May 23, 2006 the one with the subject line Tell Me What You Think, it is pretty interesting how prophetic some of your replies on that thread turned out to be. My question had to do with where CHT should place it's development emphasis for the rest of 2006 and forward, at least until more information about C7 and C.NET was forthcoming from SoftVelocity.

The general consensus in May 2006 was fairly unanimous that Clarion 7 was not going to be released before Christmas 2006 and that Clarion .NET would be along a year after that. Well, at least half of that prophecy has come to pass. There were no signs of C7 in 2006, despite some indications on the SV blog that we would see it before Christmas 2006 or at least before year's end 2006. Bob Zaunere's restated schedule posted December 30, 2006 on the SV Blog Site cleared up the delivery date and moved it into January or February of 2007. The common conclusion drawn at that time (May 2006) was that C7 and C6 were not going to be vastly different - under the covers - aside from the IDE. In other words, code that works in C6 will continue to work in C7.

That conclusion continues to be in force as far as I'm concerned. I've gone through the SUGGESTIONS list and the things already committed, development wise, and have come up with the following list (see below). In your CHT Forum replies to this same posting, please indicate some kind of priority for the things in this list from your vantage point. Pick one or two from the list that you'd like prioritized. No need to rank the whole list. If something you really could use is not there, add it into the list if you like. I've not included all the SUGGESTIONS since some of these have already been completed in 2006. A few were of minor importance so I chose to leave them off. The rest, and quite a few of my own, whether in planning or already in development, appear below. The order that I've listed these things is random, so they're not ranked by importance or priority.

HandyOutlookComControl Template And Classes (NOTE: Completed July 2007)
More control over folders is needed. Generally, more programmatic control over MS Outlook is needed.

HndConfig Class
Create a set of drop-in templates that allow developers to drop in a table from their own dictionary such that configurations used for HTTP, EMAIL, FTP and more are written into a dictionary-based table rather than into INI or Registry.

CHT Tree Template
Asked for. But not high on my list of things to do. I'm still open to convincing.

Fax Class And Fax Template
Promised, started but never completed because I really don't believe this is the best use of my time. I'm still open to convincing.

All Process and Report Limiter Templates
Be able to pick up a browse configuration from the related browse so that the BIND fields can be read from the browse procedure rather than having to re-enter them on the HOT fields dialog on the limiter template. The Web Client Template, has this kind of feature now. When the web fields are decided on the server, the Web Client Browse template can pick the field names up from a field export file so that the Web browse can be built almost automatically.

Expand MS Office Connectivity
I've committed to expanding MS Outlook connectivity. Where WORD and EXCEL are concerned there are several 3rd party products that provide programmatic control from Clarion. Is there something more I should be doing with MS OFFICE connectivity? If so, I'm open to specific suggestions.

Another CHT Tagging Template
HandyMarkerBrowse has a tagging plug-in called HandyMarkerBrowseSetsControl. Explorerbrowse has a tagging plug-in called ExplorerBrowseRecordTagger. I've got another Explorerbrowse tagging template in the works that goes beyond ExplorerBrowseRecordTagger. If you have specific suggestions for this please feel free to make them.

SMS AND MMS
A COM class that will be part of the HANDYCOMXXXX series of classes and templates to provide SMS and MMS messaging capabilities.

SKYPE Connectivity
A COM class that will be part of the HANDYCOMXXX series of classes and templates to provide programmatic control of Skype.

OMNIDRIVE Web File Aggregator API Support
At the recent Web 2 conference in San Francisco an Aussie company called OMNIDRIVE wowed everybody with a product to provide virtual web space for file storage. They have an API (not yet released) which will make it possible to build connectivity to an OmniDrive virtual web drive from any desktop. As soon as this API is ready and I feel the company is stable enough to rely on, I want to incorporate CHT classes and templates that make it easy to use one of these virtual web drives from inside your Clarion App.

Complete Embedded XML Docs In CHT OOP Class Headers
This work has been completed and works really well for CHT templates. I've got XML docs embedded in the template headers so that an app called HNDTPXHT.APP (it's one of our demo apps) can extract the docs from there and create an HTML or PDF document to enumerate and describe all templates. The result of that is CHTTEMPLATES.PDF. The application to extract XML docs from our classes has been completed for some time. It's called HNDCLXHT.APP and is also a demo app available to subscribers. I've got a few of the XML header docs in place in a few CHT classes. Completing them is one of my personal priorities since that will allow me generate a nice, organized, document to provide an overview of the CHT classes much like the template document. Both the document creation apps, HNDTPXHT.APP and HNDCLXHT.APP need to be re-worked a bit to provide an index either at the beginning or end of the HTML/PDF document with links back into the document.

Demo Applications Splash Screen Text Extractor (NOTE: Completed July 2007)
CHT has over 100 demo applications each of which illustrates some unique aspect of the tool kit. This application will extract the splash text that introduces each of those demo apps and create a single document and index that pulls all this text together in an organized, printable document that can be viewed as HTML or PDF.

Lots More CHT Scripter Enhancements
CHT Scripter was enhanced considerably in 2006 and further enhancement will take place in 2007. Things I'd like to see:
• Revise the CSS editor
• Create a visual form and browse designer that lets you drop fields onto a design space (something like Clarion's screen design tool)
• A data file repository for static, 3rdparty javascript classes that generate under a separate, developer designated name rather than in the standard xxSVR.JS and xxSUB.JS and xxCFG.JS files. And are controllable separately as needed from CHT Scripter on an as needed basis.
• A function in the scripter that tells you what images are being used in all scripts and helps you install them to the server /images/ directory.

PDF Server And Client Templates And Classes
This resembles and works a like a CHT Browser Server but the interface building tool is Adobe Acrobat Professional. As with Browser Server you plan your dictionary and then build a standard CHT server forward to include views (using special templates) that service PDF forms. The forms are interactive with the server such that form data added and change are saved to the server's data tables. Your browser will still host the PDF forms but the user interface, rather than being built with CHT Scripter using HTML,Javascript and CSS will be built with Adobe Acrobat Pro.

Plug-In UCR$ Server-Side Request Template (NOTE: Completed July 2007)
A way to configure UCR$ requests on the server without embedding.

EmbedViewEx (NOTE: Completed May 2007)
This template has been started already. It takes the present EmbedView template and expands on it to include more features like file joins expressed on the standard IDE "Table Schematic"; and more embed points. This will be an Extension template that can be used inside all Window and Report Procedures and provides an intra-procedure process loop that traverses a single table or multiple joined tables using a processing order and filter determined by the developer.

CHT INI Manager (NOTE: Completed April 2007)
A plug-in template that lets the developer designate a dictionary table to be the target/source of all CHT (or application) initiated INI/REGISTRY configuration puts and gets.

CHT Auto-Update Service Option
I've always avoided doing this because I felt that developers just didn't trust an always-on service that pings the outside world checking for updates. I guess I was wrong on that score or your opinions have changed, given the great deal of interest shown in Clarion Desktop and the number of individuals who contacted me personally suggesting I participate with Clarion Desktop. That suggestion was made, even though all you need to do to check for CHT updates is click the WEBUPDATER icon we provide for you. This service - if you tell me this is worth doing - will have an auto-update mode and install CHT updates in the background when your computer is idle and Clarion isn't running, as well as a pop-up balloon mode that tells you an update is ready, and asks if you'd like to install the update now. You choose the mode you prefer and whether to activate the service or not.

CHT Image Extensions Library
A COM class that will be part of the HANDYCOMXXX series of classes and templates to provide more programmatic control of image transformations from conversion to clipping and cropping.

Multi Language Spell Checker (NOTE: In BETA As Of April 2007)
Based on shareware dictionaries available in a dozen or more different languages, this template/class would allow you to spell check entry, text and rtf text controls on your application windows by hitting a hot key. No requirement to have MS Word installed or to buy any other 3rd party spelling product.

Revised CHT Web Client Templates (NOTE: Completed July 2007)
When you read this, please don't confuse what I'm going to say here with our Browser Server technology which provides interactive data to a browser (like the CHT forum). This is a separate area I call Client Server where your client application - a Clarion App - accesses data tables across the internet or intranet.

That having been said, I haven't really announced two new templates that appeared with 10D1.02 because some of the templates that surround these two are still in the works. The new templates, called HandyClientBrowseProcedure, and HandyClientServerListbox, let you build a web browse based on CHT's ListBoxBrowseExtender pretty easily. As easily as building an ordinary Clarion browse, probably even easier, since you can import the fields list to the browse directly from the server application. This set needs to have the following templates completed, though they're well under way at my end: HandyClientServerForm, HandyClientServerProcess, HandyClientServerReport.

The server-side of CHT's Client Server templates and classes are complete - they have been for some time - and building an interactive data server to work with a Clarion Web Client is easy as pie. See HNDMTSSV.APP for an example server. Austensibly, this will do what you can already do with SV's IP driver. But there are two major differences: speed and security. From what I've seen these browses are way faster and scale better. From my own experience, these things approach the speed of desktop apps, and they include encryption over a standard HTTP connection. No need for HTTPS. Why so much faster? • Elimination of multiple access layers through Clarion's file drivers, file manager classes and browse templates, • Compressed/encrypted data stream • Server-side views.

Windows Task Scheduler Access
A COM class that will be part of the HANDYCOMXXX series of classes and templates to provide programmatic control over MS Windows Task Scheduler.

Revise The Following CHT COM Classes To Enable More Features
• CHT CDO Email Interface Classes
• CHT Internet Explorer Interface Classes
• CHT Encryption Class To Incorporate Windows CAPICOM for a wider range of Encryption services
• CHT Interface To Windows HTML/XML Editing Functionality

CHT Training Videos
On and off over the past year I've been attempting to capture some of the hands-on training stuff I've been doing on video, packaged in flash files. I feel I'm ready in 2007 to begin packaging and recording some of that training experience and offering it for sale to CHT developers who want it. Videos will be based around individual or related groups of existing CHT demo applications. They will explain how to achieve a given objective step by step and from the bottom up - after first taking a top-down look at the problem(s) we're trying solve. Then, incrementally they'll build the application with detailed looks at everything being done.

These will be sold individually, not by subscription. So you can buy as few or as many as you feel you need. This will not replace the forum support, the demo apps, the template/class PDFs docs or the What's New Docs you are now getting. Those CHT subscriber benefits remain in place and will continue to expand as CHT grows. This is simply a cheaper, buy-it-as-you-need-it way of getting hands-on training into your grasp, on your own schedule. I've got a list of topics already being worked on, but what I think I'd like to discuss and what you may feel you need are two separate issues. So I'd like some input on topics you feel should be covered. Finally, there is no one single price point for these things. I'll base the price strictly on how much work goes into them and how much material they contain, factored downward by an estimate of how many I estimate we'll be able to sell in our 2007 sales year. These videos will be available for sale to Non-CHT subscribers - though they'd need to subscribe in order to make use of the training.

CHT Training Class
I'm thinking seriously again of offering a CHT Training Development Class in the Toronto area sometime between July and October 2007. I'm open to suggestions on the date. I've got a nice training center picked out with great hotels nearby, not far from where I live. This would be hands-on training where over the course of 4.5 days you'd build a series of applications from the ground up using only CHT and Clarion (6 or 7). This will be able to accommodate anywhere from 5-20 developers. Given the space rental costs, 5 is probably too few to cover costs. I'm wide open to input on this, but don't ask me for a travelling show of the type Capesoft provided. If you're in a position to plan one locally to you, and you can work out most of the planning and attendance details yourself I am willing to discuss it with you and share the revenues after our costs are covered.

There You Have It
So there you have my 2007 TODO list. If I've forgotten, omitted, overlooked, or ignored your primary priority, feel free to remind me - gently as you can. While I personally have some of the things I've listed set higher on my personal agenda, I'm wide open to your input. From the size of this list, and the hours in a year, it's probably obvious that some of these things will have to go, or be pushed back. I'm reasonably certain that the introduction of C7 to the mix will not force me to change direction drastically in 2007, since code, templates and demos apps planned should port without issue to C7. But that always remains somewhat of a wild card.

Cheers...

Gus Creces
The Clarion Handy Tools Page
www.cwhandy.com
gcreces@gmail.com
January 1, 2007

Add me to your 

hnd_dozen.gif

chtcopyright.gif
What's New - January 2007
chtlogo001.gif
What's New - January 2007