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.
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.
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.
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.
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.
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.
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.
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
F6 = Generate and Preview as HTML with your Browser
F7 = Generate and Preview as HTML with CHT (C#) Previewer.
Editor Window Size and Position
XML TAG AND SECTION MANAGEMENT
CHARACTER CONVERSION TO HTML SYMBOLS
NEW [OPTIONAL] EMBED AREAS
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.
Click the link below to contact us by email.
It will start your email client with our email address inserted: