Category Archives: Clarion News

Happy New Year!

On behalf of our entire staff, we wish all of you a very Happy, Healthy, and Prosperous New Year (and new Decade).

Our offices will close today at 2 P.M. and
we will be back on Monday, January 4th.

Thank you for your continuing support in 2009, and look for some great things to come in 2010.

Happy Holidays from SoftVelocity!

On behalf of the entire staff here at SoftVelocity, we would like to wish all of you a happy and festive Holiday season. Our offices will be closed at 1 P.M. EST on Christmas Eve (December 24th) as well as Christmas Day (December 25th), and we will be back bright and early on December 28th. Thank You!

7.1 release is out

Email notifications with download links for the 7.1 release are on their way.  Here are the few changes made after the pre-release:

FIX: FILETIME and WIN32_FIND_DATA declared in the WINSOCK.INC file were renamed to avoid duplicate symbol errors; new names are FILETIMEW and WIN32_FIND_DATAW
FIX: Greenbar effect didn’t work in ABC chain
FIX: wrong version of HTML help templates were released
FIX: PE install was missing files required for the Window Previewer
CHANGE: add Rtar_src.tpw to PE installation

The 7.1 add-on drivers (IMDD, DFD, IPDS) have already been released – contact sales if you didn’t get yours yet.

Another topic of interest, some users really like the theming capabilities of the C7 menus, while others want a menu with no owner drawn items. We are looking into the possibility of allowing to switch between owner-drawn menu items and standard menu items, we’ll keep you posted on that. We also already have a handful of additional changes in testing now for the next update to 7.1 and we expect to make the next update available in the beginning of January.

We’ll be working hard to get an update out for Clarion.Net before the Christmas break.  If it doesn’t make it out, then it will be first priority right after the New Year begins.

7.1 Pre-release on its way to you

Small adjustment to the release plan; we targeted the 7.1 release for today 12/18, but yesterday we fixed two bugs in the window library and the QA team requires 2 full days to redo the regression test suite. We realize there are a lot of folks very eager to get their hands on the new release, and rather then make you wait until late Monday or possibly Tuesday, we’re making 7.1 available today to all subscription holders as a “pre-release”. If no regressions are found the pre-release will in fact become the official release.

Another good reason for letting the release out today; all 3rd party blackbox products must be rebuilt with the 7.1 compiler, so this pre-release will give those vendors a headstart on doing so.

In another post I received a comment about this item in the release notes; “CHANGE: FILEs declared within a Procedure are now Private data to that Procedure”, and I promised to provide some further details about that change.

The linker has been improved in 7.1, whereas in every prior release going back to earliest Clarion compiler/linker, reporting of “duplicate symbol” by the linker was dependent upon the order of files in the link list. Meaning that the absence of “duplicate symbol” errors did not necessarily mean that all was OK. When this problem was exposed and fixed, it immediately uncovered two previously “hidden” problems in some of the libsrc code we ship, and exposed some problems in 3rd party products used in our regression testing, and we do expect that a few of you will find your own “hidden” problems when you rebuild with 7.1.

How about an example of the type of problem the 7.1 linker will now catch? OK.  Assume that there are 2 very different procedures but with the exact same public name in 2 different Member modules. Nothing can be done by the linker to allow them both, but the old linker could miss that error dependent upon the order of source files and presence of resource files in the link list. The solution for this type of error is easy, one of the procedures can be renamed, or the PRIVATE attribute could be added to their prototypes. In general, it’s better to use the PRIVATE attribute for all procedures and data objects local to a member module, unless they are exported or used in other modules.  If you do run into an unexpected duplicate symbol error, don’t panic, its easy to fix and will make for a better product.

We’ve taken your suggestions and your feature requests and delivered on them with 7.1; from the ultra-small things like changing toolbar icons, to the big things like the new functionality in the property grid, the new window previewer, automatic App saving and recovery functionality, Windows 7 manifest support in the linker/templates, a new Report Writer, ….. well its a very long list of improvements which I won’t repeat right now.

7.1 is a fantastic update; more reliable, more stable, and more fully-featured then any other Clarion release, and we’re sure you’ll love it.

Release update

The day before Thanksgiving I posted about the upcoming release of 7.1 (and the next update for Clarion.Net), and I wrote that we expected to make it within 2 weeks.  In that same post I mentioned we’d be closed for a long (for us) 4 day break over the holiday.  Well it seems some people took that 2 weeks literally to mean 14 consecutive days, and not the next 2 working weeks. Ahem, even our developers take a day off now and then… 🙂

We are in final closedown for the 7.1 release, we planned to have it ready by this Friday (and that would be within the 2 working weeks!), but there is a chance it’ll have to go out on the following week. Why?  Well there were a few “hot topics” brought to our attention last week and we decided to tackle 2 of them. So if you don’t get a notification of the 7.1 release this Friday, just relax over the weekend and look forward to getting 7.1 early next week. The same applies for the Clarion.Net release!

Here is what we’ve been working on these last 2 weeks, and indeed some of these items did consume a bit of extra time (the first 2 items were the “hot topics” I was referring to)

WORKAROUND: The OS could position some Menu items outside the screen boundary if there were sufficient number of items to cause a multi-column overflow
FEATURE: You can now set if the Copy Referenced Dlls to Output Directory defaults to On or Off via the Tools/Options/Clarion/General tab
FEATURE: The PRIVATE attribute is now allowed for TYPE declarations

CHANGE:  Better error message when an included project cannot be found during a make
CHANGE:  When you associate the C7 IDE with .app files, the .app files now get an appropriate icon displayed in Windows
CHANGE: FILEs declared within a Procedure are now Private data to that Procedure
CHANGE: Menu style now takes into account dimensions of particular item defined in MENU/MENUBAR declaration or set at run time (in latter case PROP:NoWidth and/or PROP:NoHeight must be set to FALSE)
CHANGE: Post a warning if window/report parser changed some control definition because a variable used as a attribute’s parameter does not exist anymore
CHANGE: Warning if PRIVATE and PROTECTED are used incorrectly
CHANGE: private queue types in abfile.clw are now marked private to take advantage of the updated clw compiler and reduce the number of duplicate symbols possible
CHANGE: renamed internal class used in the Query control QEIPManager to QueryQEIPManager because it was duplicated with the public method with the same name.

FIX:  %ApplicationExternalLibrary was returning the wrong value if you edited the project properties of an app, but did not set the model (ie left it at the default value of dll)
FIX:  An exception would be thrown by the data pad if you copied a field and then tried to paste it into an empty local data list
FIX:  Not all compilers were registered if you created a new C6 version
FIX:  The Data pad could throw an exception if you tried to add a Queue to local data
FIX: Aboop.tpw: Incorrect declaration of a variable for the return value was generated if the procedure return type in the prototype was ? or *?
FIX: Avoid auto-#RELEASE on emitting unconditional source lines
FIX: Setting of PROP:NoHeight and PROP:NoWidth properties for menu items worked not as documented.
FIX: Source Editor – Search/Replace would fail for various conditions
FIX: The ISAM file imports would not work if you had a file with a . in the name.

PTSS 32051: Suppress Windows internal repainting of the button upon changing its text
PTSS 33701: Clarioncl would some times fail to register templates if multiple /tr switches where supplied on the command line
PTSS 33804: Lookup table must be updated first before record validation
PTSS 34190: GROUP and OPTION controls cannot be selected themselves but they provide defaults for selected text and background colors to nested controls
PTSS 34226: Current build configuration was not being passed so the %ApplicationDebug symbol was not setup correctly
PTSS 34563: Show warning if WINDOW with TOOLBOX/DOCK/DOCKED attributes has the MDI attribute too
PTSS 34600: Changing of variable name in the Data Pad was not reflected in changes to attributes of WINDOW/REPORT controls using that variable as a parameter
PTSS 34605: The window previewer would not work with ENTRY controls that had @P or @K pictures
PTSS 34631: Designers might not be available in plain embed editor
PTSS 34643: Implementation of drawing of themed borders for RTF controls

7.1 preliminary release notes and a Happy Thanksgiving!

This week we have been working hard on the final testing and closedown of Clarion 7.1.  The Development and QA teams both feel that the release will be ready within 2 weeks, maximum.  We will also be issuing an update to Clarion.Net and to the Clarion# by Example course within the same timeframe.

Thanks for your patience in waiting for this release; the best development environment in the history of Clarion, and you can look forward to more new and better things just around the corner as we ready to release the Clarion.NET application generator in the first quarter of 2010.

In the text below you’ll find a list of features, improvements, changes, resolved PTSS reports, and internal fixes that we’ll deliver in 7.1. All told there are more then 60 new features or improvements, and another 340+ changes and fixes.

(Our office will be closed from 11/26 thru 11/29 for the Thanksgiving Holiday, and will reopen on Monday, November 30th.)

7.1 preliminary release notes

FEATURE: New Property Grid features; supports tab key navigation, display of checkboxes for true/false values, provides a spinbox for integers, supports undo/redo, auto-expand of child properties, and more…

FEATURE: Tooltip control now supports “Themes”  (uses the OS theme)

FEATURE: Built-in Windows 7 manifest support in the linker

FEATURE: Generated Manifest support for Windows 7 in the templates

FEATURE: .APP auto-save and crash recovery functionality

FEATURE: Window Previewer now compiles and executes your window in a live program with user-defined data

FEATURE: If you enter the Designers by pressing either the Window or Report buttons on the main application tree view, you return directly to the application tree view when you have finished using the Designer.

FEATURE: TPSFix now supports fixing TPS files encrypted with enhanced encryption

FEATURE: Tab Order Assistant: new buttons; move first/last, show in code order, show in z-order

FEATURE: IDE Data Browser, added a toolbar button to sllow to specify Picture token, Heading, and Justification (also available from right-click Context Menu)

FEATURE: There are now “Expand All” and “Contract All” buttons on the trees in the Data pad and Dictionary editor

FEATURE: C7 implementation of MASK input;  closely follows behavior of previous Clarion versions

FEATURE: The MSSQL driver now supports the extra data types added in MSSQL 2008

FEATURE: Ability to run a utility template using clarioncl by supplying a /aru switch plus the name of the app the utility template is run against plus the name of the utility template

FEATURE: Ability to set the ODBC Catalog and Schema when importing/synchronizing tables from an ODBC data source

FEATURE: Ability to add multiple pre and post build events to a project using #PROJECT

FEATURE: Ability to open multiple solutions that access the same dictionary in multiple instances of the IDE

FEATURE: Ability to set the tab style that the window previewer will use via the tools/options/clarion/window previewer panel.

FEATURE: The most recent list is now preserved even if the IDE crashes and if you have multiple copies of the IDE open, the most recent list will show the most recent from all copies of the IDE

FEATURE: The MSSQL driver was not prioritizing the new “SQL Server Native Client” ODBC driver before the “SQL Server” ODBC driver, thus not allowing MARS support on machines that had both of these installed and the “SQL Server” driver appeared in the registered driver list before the “SQL Server Native Client” driver

FEATURE: The driver string builder for ODBC based drivers now allows you to set the ZERODATE switch to any date value

FEATURE: Added Examples on how to work with XML in C71 using the XMLGenerator and the new QuickXMLParser

FEATURE: Allow all major comparison operators in COMPILE/OMIT expressions.

FEATURE: App and Dct files are automatically created if their text representation exists and the App or Dct file is in the list of files to be automatically imported

FEATURE: DataPad: When a group or queue has focus in the dictionary editor or data pad; Ability to add a field to the start of the group/queue, to the end of the group/queue or after the group/queue using either the context menu, the insert key or the drop down list on the add button on the toolbar

FEATURE: Designer allows you to launch >1 preview window (simultaneously)

FEATURE: If printer supports printing of multiple copies, the RTL restricts max value of PROPPRINT:Copies to max number of copies reported by the printer driver

FEATURE: More tool tips added to the TopSpeed driver string builder dialog

FEATURE: New IMenuStyle property – menubar gradient mode. The setting has effect only if normal menubar background brush is a horizontal gradient brush. If gradient mode is set to BarGradientMode:Rightmost (default), the gradient is applied to right edge of rightmost menubar item without the RIGHT attribute. If gradient mode is set to BarGradientMode:Full, the gradient is applied to the entire menubar

FEATURE: New built-in GETREGSUBKEYS function to gather names of all sub-keys of a given registry key

FEATURE: New PROP:TextLeftMargin and PROP:TextRightMargin properties for ENTRY, SPIN, COMBO, TEXT, RTF controls and for drop-down list-boxes

FEATURE: New flag in the EXP file’s MANIFEST directive: ISOLATION_AWARE

FEATURE: New SETEXITCODE and GETEXITCODE built-in functions to set/query program’s exit code (error level) without necessity to close the program immediately

FEATURE: New MSGMODE:FIXEDFONT flag in the last parameter of the MESSAGE function to show message text using the fixed-pitch font

FEATURE: New built-in GETREGVALUES function to gather names of all values of given registry key

FEATURE: New zone value returned by PROPLIST:MouseXXXZone properties: LISTZONE:GroupHeader if mouse moved/clicked inside the header but outside any particular field’s part of the header.

FEATURE: Incremental Search Timeout Option in the DCT options Dialog to set the value used in the DCT/Data Pad tree locator

FEATURE: Ask Before Partial Save Option in the DCT options Dialog option to enable/disable the Message asking for confirmation of the Column’s changed values. When disabled the Save and Cancel buttons will be disabled in the Entity Browser and no dialog will pop-up asking to Save. The changes will always be saved to memory.

FEATURE: PROP:LastChanceHook SYSTEM property

FEATURE: Subversion features of the IDE will use the text representation of a dictionary rather than the binary Dct, if the Dct is registered for auto import/export

FEATURE: Subversion options can be accessed via the context menu for Clarion for Windows projects

FEATURE: When copying and pasting the details of a field that has an initial value from the dictionary editor or the data pad, the definition now includes the default value where possible.

FEATURE: You can specify Dct files are automatically imported and exported to text format.  See the Tools/Options/General/Binary File auto-export/import dialog for how to configure this

FEATURE: Ability to set enhanced encryption driver string options using the … button for the TopSpeed driver in the dictionary editor

FEATURE: Ability to add into the NAME attribute of a field or a blob in an SQL table | SELECTNAME=value, | UPDATENAME=value, or | INSERTNAME=value to specify alternate names for the field/blob that the driver will use when generating a SELECT, UPDATE, or INSERT statement.

FEATURE: Ability to set headers of pool fields to blank and when you derive from them the headers of the derived field are not destroyed

FEATURE: Ability to copy field definitions from source code and paste them into either the data pad or the dictionary editor

FEATURE: Ability to generate apps/solutions from the command line using Clarioncl

FEATURE: Ability to use substitution of exported name in the EXPORTS section of the EXP file. The entry in the EXPORTS section can have format [<substitution name>=]<external name> @?

FEATURE: new built-in functions; FREEZE (SIGNED feq),SIGNED; UNFREEZE (SIGNED feq, SIGNED state)

FEATURE: New attribute for procedure prototypes and static variables declarations: EXPORT. The EXPORT attribute forces the variable or procedure to be added to the export list of the DLL even if it is not listed in the EXPORTS section of the EXP file.

FEATURE: new attribute “PASCAL” value for #RUNDLL. The WIN32 attribute is deprecated (its ignored if present) and is replaced with the new attribute “PASCAL”. If parameter string is passed to a function invoked by #RUNDLL with the PASCAL attribute, its address only is passed, i.e. *CSTRING,RAW rather than *CSTRING for #RUNDLL without the PASCAL attribute. If called function is changing value of passed string new value cannot exceed 10000 characters including terminating ‘<0>’.

FEATURE: New option in Class Browser Settings that allows to show/hide entities from included files. Class Browser Settings is available from the dropdown button on Class Browser toolbar. Objects from included files are now hidden by default.

FEATURE: The Window Previewer uses the state of the “UseVisualStyles” option in the window formatter to decide if to use visual styles or not when displaying the window

FEATURE:  The Related Files list in the relationship editor is now sorted depending on the dictionary options table sort order

IMPROVEMENT: Better highlighting of the header of a themed Listbox

IMPROVEMENT: Better error message when you try to use a Dll/Exe from one version of Clarion with a Dll/Exe from a different version

IMPROVEMENT: “Application” is now the default project when creating a new project

IMPROVEMENT: Do not try to bind identifiers when they are found inside string literals

IMPROVEMENT: Handling of abnormal exit from CW programs

IMPROVEMENT: Calculate optimal width of message box buttons if their texts are passed as strings

IMPROVEMENT: cwHHABC.TPW no longer needs to include cwhhl.inc in lib mode.  The cwhh.inc file has been changed to handle both lib and dll modes.

IMPROVEMENT: More intelligent closing of program or invoking the system debugger in case of ASSERT or run-time errors

IMPROVEMENT: Allowing to close the thread where exception occurred without necessity to close entire program

IMPROVEMENT: Better handling of HALT and STOP from threads other than main thread

IMPROVEMENT: Center texts vertically in listbox header with taking into account groups and multi-line headers

IMPROVEMENT: change the Save/Close App buttons icon to better distinguish it from other save icons
CHANGE: Make sure the timestamp of a Dct is preserved to help version control

CHANGE: The -aru switch to Clarioncl now takes an optional third parameter which is a string parameter to pass to the template utility

CHANGE: The Win32 redirection system now ignores empty directories specified when you do *.obj=;.obj to be consistent with how the C6 redirection system worked

CHANGE: The Goto Derived field button is no longer visible when adding a new field

CHANGE: The Window Previewer now uses the state of the “UseVisualStyles” option in the window formatter to decide if to use visual styles or not when displaying the window

CHANGE: Upgrade SVN addin to work with latest version of SVN

CHANGE: When you press the Add button when you are on a group or a queue in the dictionary editor or data pad and that group or queue has fields in it, then the newly added field will be added after the group/queue

CHANGE: workaround the PostgreSQL’s ODBC interface which would crash if you called SQLCOlumns and passed a NULL and set the length to SQL_NTS.

CHANGE: !!! code snippet made it very difficult to add multi-line XML comments.  Snippet changed to !!!<

CHANGE: Accessing an app file no longer changes the timestamp of the associated dct

CHANGE: Allow specifying the color to draw text of disabled items in flat menus

CHANGE: AppGen: Allow to specify a new procedure in the dialog to choose a procedure called in the embed

CHANGE: C%V%HTM%X% is now added to the initial list of lib files to ignore (LibIgnoreList.xml) when attempting to copy Dlls.

CHANGE: Change the cursor in the RTF control while mouse pointer is inside link

CHANGE: Do not expect that function called by #RUNDLL restores any general registers

CHANGE: Draw some texts using specified charset regardless of the current ACP codepage value

CHANGE: ENTRY/SPIN/COMBO on toolbar must lose focus on pressing the Esc key

CHANGE: Export to Text dialog now starts in the directory where the app resides

CHANGE: IDE Data Browser now uses the Clarion List control instead of the DGV

CHANGE: Make IniClass.critSect protected and IniClass.Remove(STRING,STRING) virtual to make it easier to create classes derived from IniClass

CHANGE: Make the default button consistent between the “Are you sure you want to delete” dialog and the “Confirm Delete” dialog

CHANGE: Most Recent list now removes .. and . from file names

CHANGE: Omitted charset component of the FONT attribute is treating as CHARSET:Default now (rather than CHARSET:ANSI) => omitted charset is inheriting from the owner’s font or SYSTEM. This change may cause necessity to modify CW2/C4 programs on converting to C7.x.

CHANGE: Refreshed Wizard Icon to use the C7 icon

CHANGE: Registry functions set the ERRORCODE value now

CHANGE: Show functions only (procedures returning result) defined in the application in the Formula Editor

CHANGE: Speed up the reading of ABC header files

CHANGE: Speed up structure loading in designers

CHANGE: Template button text for manifest settings now reads “Application Manifest”

CHANGE: Template Editor code folding improved speed of parsing.

CHANGE: The dictionary editor no longer warns you about deletion side effects if the effect is contained within the entity being deleted.  In other words deleting a file will no longer warn you that a key will be deleted

CHANGE: Updated icon for Save and Exit the application

CHANGE: Win32 project files would return relative paths rather than absolute paths causing problems with reloading solutions

CHANGE: allow parser to accept the incorrect USE attribute of form USE(?x,,?y) – used by templates in REPORT Date-Time Stamp control template

FIX: “Maximize/Restore Down” worked incorrectly in List Box Formatter.

FIX: “Underline” for Group works incorrectly in List Box Formatter.

FIX: #ERROR statement on creating a new procedure based on the procedure template with non-empty prototype

FIX: #ORDINAL attribute should not be created for COMMENT pseudo-controls

FIX: %BIN% was not being evaluated correctly by the Win32 redirection system for versions other than the current version of Clarion.

FIX: 2 controls cannot be selected for editing when opening TOA.

FIX: Addition of Detail and Break Group in Page Layout View should not be permitted.

FIX: Alert Key Editor was displaying in the Taskbar

FIX: An exception would be thrown when creating an app from a .Txa if the Clarion version was not set to Current

FIX: An exception was thrown when trying to import a .Dctx that has a field that was a reference to a queue, group or class

FIX: An exception was thrown if you moved the location of an installed version of Clarion and then tried to use that version without updating the options for that version

FIX: An exception was sometimes thrown if a text file that was open in the IDE was changed by another program

FIX: Incorrect controls could be added in Option in code and the structure validator did not catch it.

FIX: AppGen: Incorrect matching of formal and actual parameters if some leading parameters are omitted

FIX: Arrow buttons are active for Page Header, Detail, Page Footer and Report Form in TabOrderAssistant

FIX: Background for Toolbox equals Background for Window.

FIX: COMMAND(1) was returning the program name if you did not put .exe on the end of the command.

FIX: Clarioncl would fail if there was no default redirection file

FIX: Clarion template editor ignored the currently active version when searching for template files

FIX: Close views by pressing the X button on the workbench tab bar

FIX: Columns headers could be displayed not centered vertically if value of PROP:LineHeight is sufficiently less or greater than font size

FIX: Controls not visible in similar location as on a SHEET

FIX: Conversion of older C7 .Dct files to the current version did not work

FIX: Copy/Cut/Paste should be disconnected for Section in Page Layout View.

FIX: Creating an app from a corrupt txa did not report errors.

FIX: DATE_TIME was incorrectly listed as a valid data type when editing application variables

FIX: DELETE(fileName) would fail sometimes under Vista

FIX: Deleting a file that was used in a relationship and not all key components are mapped in the relationship sometimes would throw an exception

FIX: Deleting an alias that is used in a relationship would throw an exception

FIX: Designer: Arrows for “Spin” control were shown not correctly on the form.

FIX: Double click on Image control should activate “Select Image file to display”.

FIX: Ensure that EVENT:BuildKey is posted at least once per every key to build

FIX: Error occurs if Tabs add in the Sheet by means of Property “Tabs” – Collection.

FIX: Error, if Width for field = 9 numbers.

FIX: Error, if Indent for field = 10 numbers.

FIX: Exception throw when closing the EmbedsTreeDialog from the designer.

FIX: Expression editor was not showing the connecting lines when displaying global data

FIX: F1 works when adding items to a dictionary

FIX: Fixes in designers Undo/Redo

FIX: Forbid input of negative values for some properties List Box Formatter for “Combo”

FIX: Generator was using the wrong redirection file to load the template registry when loading an app

FIX: Handle multi-line groups of columns in List

FIX: Handling of TAB and ENTER keys in ENTRY controls placed on the toolbar

FIX: If Report Form adds in a Report first time without saved then Height of Report Form will not change.

FIX: If an include directive was not properly terminated in a .red file the wrong error message was displayed

FIX: If Listbox’s column has both scrollbar and right border, the border’s line is duplicating on scrolling this column to right

FIX: If property Disable is True for Sheet then it will not be visible on the form.

FIX: If several fields are selected, upon pressing DEL they should be removed.

FIX: If width of a field negative in a code then error arrears for list.

FIX: If you deleted a field that was over another field, derived from another field or had a validity check of Must be in File, then the field was not removed from the internal structures until you closed the dictionary editor, thus causing spurious warnings if you deleted other objects

FIX: If you added an alternate C7 Clarion for Windows version, the compiler list was not set up

FIX: Image of BackgroundImage for Window is not correctly placed on the form.

FIX: Incorrect file could be shown in the error message if DLL or entry in it was not found

FIX: Incorrect list-box declaration is generated by the browse wizard if the only displayable field is of MEMO type

FIX: Incorrect error reported by the CLW compiler if EQUATEd class label is used in implementation of interface method this class implements

FIX: It is impossible to choose some controls in Toolbar by means of the mouse.

FIX: List Format Dialog was displaying in the Taskbar

FIX: Listbox in MDI child window might not be redrawn on restoring of the minimized MDI frame

FIX: Lock Controls for Sections works incorrectly in a Page Layout View for Report.

FIX: Memory associated with the redirection system was not released as soon as possible when you edited a redirection file or loaded a file using File/Open File using Redirection.

FIX: Menubar and Toolbar can be moved with the the cursor in TOA.

FIX: Minimize of Sections works incorrectly.

FIX: Mode “Center” for BackgroundImage of control Toolbar works incorrectly.

FIX: Multi-line headers could be drawn incorrectly under certain conditions

FIX: PROP:PageAfter returned incorrect number

FIX: Pasting a group, queue or class definition into global data when there was global data coming from the dictionary would disrupt the global data stored in the app if you pasted the data at the top of the list or between 2 dictionary fields.

FIX: Populating List on a SHEET is the incorrect parent

FIX: Possible problems on attempt to edit complex WINDOW or REPORT structure

FIX: Possible infinite loop on generating a report for a file when the only displayable field is of MEMO type

FIX: Procedure prototype could be parsed incorrectly if default parameter values are string literals or expressions

FIX: Processing of resource files could clear some linker’s global data

FIX: Property “Scrollbars” for Combo and List worked incorrectly.

FIX: Required Runtime redrawing of ENTRY/SPIN/COMBO controls could not be performed sometimes

FIX: RestrictServer and DeleteServer RI constraints were not read when importing a dictionary from .Dctx format

FIX: SHEETs could be not redrawn after changing certain properties

FIX: SVN addin did not support https

FIX: Scrollbar of listbox’s column/group could be not redrawn on changing the format string

FIX: Single-line TEXT controls could be not selected with the mouse under Windows7

FIX: Some controls shift their location if you change some properties for Application

FIX: Some controls change size if some properties for the Window change.

FIX: Source Editor; several fixes in Search/Replace

FIX: Specifying more than one alternative name in a field’s NAME attribute of an SQL table would cause a GPF

FIX: Switching Band Views – missing functionality

FIX: Template Editor: If template or functions has no content collapsing the region will not work

FIX: Templates” empty () in the Parameters was showing a false error “The prototype and the parameters does not have the same number of variables”

FIX: The CURSOR attribute was documented for PROMPT and STRING controls but were never supported for them

FIX: The CURSOR and TIP attributes were documented for GROUP and OPTION controls but were never supported for them

FIX: The Data Pad did not update when you changed the name of a dictionary using File/Save As.

FIX: The Data Pad could throw an exception when terminating the IDE

FIX: The Derived From list in the field editor was empty the first time you edited a field that had fields derived from it

FIX: The FORMAT string checked for multi-line headers of fields (not groups), but height of header was forced to one line (Headers are breaking to lines by the ‘<10>’ character)

FIX: The IDE would crash if you opened a solution that contained app files, then closed all open apps, then opened a new solution that contained apps without first closing the solution

FIX: The IDE would sometimes lock up after closing an app

FIX: The IDE would throw an exception if you cancelled out of an app and then immediately reopened it

FIX: The MSSQL synchronizer could crash if column names were very small (1 character or sometimes 2 characters long)

FIX: The SQL drivers could cause a Function Sequence Error if you issued a SELECT statement using PROP:SQL on a table that had a primary key that had a key component that was a TIME, DATE or timestamp field

FIX: The SoftVelocity.winprev was referencing an .ico file that could not be found via the default redirection file

FIX: The Up and Down arrows for moving items in the dictionary editor and the data pad were enabled more often than they should

FIX: The choice of controls from Detail and Report Form in Page Layout View should be forbid.dden

FIX: The conversion program generated by the dct editor did not work if the file contained pictured fields

FIX: The debugger did not load/use the redirection system properly when debugging products built with other versions of Clarion other than the current version

FIX: The debugger would crash if you attempted to debug a program that could not be loaded into memory

FIX: The descriptions for the clarioncl /agc and /agd switches were wrong

FIX: The entry controls on the TPS Fix Wizard were not refreshed as often as necessary

FIX: The formula parser used case sensitive comparison of functions labels

FIX: The formula parser not allowed extra spaces between tokens in the call’s parameter list

FIX: The list of files when picking a file in generator was not sorted based on the dictionary sort options

FIX: The name of the backup directory reported as being used to backup a conversion file was wrong if the file was a TopSpeed table within a super-file

FIX: The Oracle driver would ask for connection details multiple times if the owner attribute did not include server/host name

FIX: The position of the RadioButton does not change after copying from one Option into another.

FIX: The select Txa dialog was not opening in the directory where the app was to be created in when you used the “Application from Txa” new solution option

FIX: The vertical line at the left in a Page Layout View for Report should not be moved if scrolling.

FIX: The version information stored in the Dct did not have the correct build number

FIX: The window previewer did not work on window structures where the text for the Window title was a variable

FIX: Tooltips were not displayed for ENTRY/SPIN/COMBO controls

FIX: Undo last action works incorrectly for control “Line”.

FIX: Unhandled Exception occurred if to remove Report in Page Layout View.

FIX: Unhandled exception occurred if value of the AT attribute is not integer.

FIX: Unhandled Exception occurred if to add 2 Lines and press Undo last action.

FIX: Upgrading a C7 dictionary would randomly fail

FIX: Width of group of LIST columns could be decreased under certain conditions on getting PROP:Format

FIX: Win32 redirection system could cause system instability if a .red file did not finish with <cr><lf>

FIX: Window Previewer did not display non-English characters correctly

FIX: Window/Report changes made in the designers did not affect the text of WINDOW/REPORT sent to the full editor

FIX: Writing to .Dctx did not work if there was a group that was derived from another group

FIX: You could not save changes to a dictionary once you had browsed a table until you closed the dictionary and reopened it

FIX: You could not convert a TopSpeed table contained within a super-file, if the name of the file did not include an extension

FIX: You could not close the IDE after exporting an app to text from the Application menu when an app was still open

FIX: You could not set a <NoLink> mapping to a field once the relationship had been created

FIX: You could not add fields to an existing table using the synchronizer

FIX: You were asked if you wanted to save changes to the .Dct when you pressed the green tick

FIX: field should be selected by the right click of the mouse.

FIX: focus on columns in List Box Formatter.

FIX: handle special drawing of an icon as a system menu’s item

FIX: incorrect message in the status bar when the app was unloaded.

FIX: incorrect error message was displayed when generator detects that an app is already open
PTSS 10507: Cloned PROGRESS control could cause the “division by zero” exception

PTSS 12481: Status bar could be not redrawn immediately after changing the active MDI child window

PTSS 12562: Probable stack overflow on execution of the %ExtractFieldsToBindFromText #GROUP

PTSS 12583: Possible infinite loop on ROLLBACK

PTSS 20447: Line X/Y written incorrectly

PTSS 20448: Behavior change

PTSS 20553: Radio control in window formatter

PTSS 20632: Different Versions of “Clarion.ico” will not load in the WD

PTSS 20704: Buttons not showing as MultiLine in Designer

PTSS 30073: Structure locks up IDE

PTSS 30188: The Basic driver would corrupt memory if you had a string where the number of “s in the string was greater than 258 – length of the string modulo 255.

PTSS 30327: There were chances to post too many messages to thread’s message queue if program posts at least 1 event for each invoking of ACCEPT loop

PTSS 30346: Save As did not work in the dictionary editor

PTSS 30494: The TopSpeed driver would crash rather than reporting an error on some corrupt TPS files

PTSS 30532: fix for 800000xx colors in Designer

PTSS 30632: Auto incrementing key values were not returned from ADD if the file had a memo stored in the same file as the data or used the OEM attribute

PTSS 31243: IDE was displaying an exception dialog, plus other unnecessary dialogs when loading of an app was cancelled.

PTSS 31383: Conditional formulas with nested sub-expressions

PTSS 31441: Embeds for code/data of new methods of local objects could be linked into Embed Tree incorrectly

PTSS 31471: Sometimes the list of fields was incomplete when trying to add a key component

PTSS 31504: Control Template Pad – Populating without dragging

PTSS 31794: Make file list selection for Individual File Overrides show in alphabetical order

PTSS 31796: Position of controls hard to track

PTSS 31841: A heap corruption error was sometimes thrown when trying to convert a file

PTSS 31848: Wallpaper converted incorrectly

PTSS 32116: Move a button from tab to window did not show warning message…..

PTSS 32130: Offset throws error message when it should default to 0

PTSS 32419: The screen picture, screen controls and report controls were not generated for data created using #LOCALDATA or #GLOBALDATA

PTSS 32437: Sometimes the list of fields was incomplete when trying to add a key component

PTSS 32448: Template Editor Code folding didn’t create region for upper case/lower case functions

PTSS 32499: CE characters in Listbox header

PTSS 32592: State of buttons on the Extensions page could be not refreshed after deleting the only extension

PTSS 32634: TRN on STRING not working in report designer

PTSS 32734: CE characters in Listbox header

PTSS 32737: STRING gets serialized wrong if “VariableString” property is set to FALSE

PTSS 32759: No GREY atrribute doesn’t work

PTSS 32761: No EntryPattern (MASK) property available on controls.

PTSS 32827: Page Layout View blanks visible fields on Save

PTSS 32906: Control template pad scroll to bottom

PTSS 32907: Instant Feedback from Designers

PTSS 32990: Windows lose controls, loss of standard clarion behaviour

PTSS 33022: Tab order in the field editor improved

PTSS 33051: Center Justification not working properly

PTSS 33099: Report formatted numeric display

PTSS 33102: Forcing of MENUBAR’s font color caused problems with displaying menus using non-Latin characters

PTSS 33112: Updating the text of the control on the shared toolbar can cause a cross-thread SendMessage which cannot be completed because of waiting for a critical section

PTSS 33203: Cancel to add a break Group doesn’t work

PTSS 33211: Wrong reproduce of some Cyrillic symbols in Window Designer

PTSS 33223: Fails to detect global extension changed

PTSS 33270: New functionality for the Expression Editor

PTSS 33329: More strict handling of malformed and not-canonical (with embedded comment, default values of parameters as string literals, etc.) prototype text

PTSS 33344: Listboxer Formatter loses Euro-Sign (

PTSS 33345: Smart Tag Feature “Show tab order” should be added in the context menu of bands.

PTSS 33351: Wrong icons on Spin box

PTSS 33385: checkbox and transparent in designer

PTSS 33418: Update Application Properties information after import from TXA

PTSS 33488: Window painter ignores DCT field settings

PTSS 33502: Populate fields on tab

PTSS 33516:    Large Font not correctly displayed in Edit Control

PTSS 33530: Justification not working properly

PTSS 33545: Cannot create browse control on a tab

PTSS 33553: Unexpected “duplicate symbol” error could be reported at link time

PTSS 33578: Forcing of MENUBAR’s font color caused problems with displaying menus using non-Latin characters

PTSS 33584: Registered events are processed by the registered handler before they are passed to the ACCEPT loop

PTSS 33598: Template Editor code folding didn’t create region for upper case/lower case functions

PTSS 33653: Manual Entry of ICON does not work

PTSS 33661: Report formatted numeric display

PTSS 33663: List Box Formater initiate state for Resizeable and RightBorder and other sets to FALSE

PTSS 33669: Incorrect declarations of BITMAP and BITMAPINFOHEADER structures

PTSS 33669: Incorrect declarations of BITMAP and BITMAPINFOHEADER structures

PTSS 33677: Quick ClassBrowser dropdowns empty

PTSS 33686: Changing the properties of Window changes size of entry controls that are on a TAB

PTSS 33688: Right click on window caption does not show popup menu

PTSS 33689: Double click on controls does not bring up embeds

PTSS 33696: Stored WINDOW/REPORT attributes were not updated correctly after changing WINDOW/REPORT declaration

PTSS 33698: Saving window properties TILED Wallpaper

PTSS 33699: Problem with adding the options to an option group

PTSS 33701: Clarioncl would sometimes fail to register templates if multiple /tr switches were supplied on the command line

PTSS 33714: WORKAROUND : UNICOM Dll is posting a message that clashes with the RTL.

PTSS 33716: No Keystroke Exit on Edit Picture

PTSS 34421: PROPPRINT working incorrectly

PTSS 33718: Template Editor code folding missing some block statements

PTSS 33729: Tab Indent with dialog, one line too many

PTSS 33738: Block Indent does not save indent value

PTSS 33754: Can not open window designer with sub menu

PTSS 33774: version resource template problem

PTSS 33786: version resource template problem

PTSS 33805: When you add a string to a window and assign it a use variable the screen’s picture should change to display the use variable.

PTSS 33807: remove leading spaces before matching result of free input into entry control with @D or @T picture – for compatibility with previous CW versions

PTSS 33810: Draw disabled STRING controls grayed

PTSS 33811: Ability to use ENTER as well as CTRL-ENTER to add a blank line to a tool tip when editing application data

PTSS 33814: Vertical gradient brush was used incorrectly to draw normal menubar background and selected item background

PTSS 33827: Cannot drop a column from Datapad on to a Box control

PTSS 33828: Populating a line on a report has a default value of 1000 for both Width and Height

PTSS 33829: Gradients applied incorrectly to Menubar

PTSS 33846: Incorrect emulation of template language statements to get data about files in the procedure

PTSS 33858: an exception was thrown if the redirection file had a line like *.lib = ..otherdir

PTSS 33859: sub-menu items not correctly disabled

PTSS 33878: Add to button tasks

PTSS 33885: Listbox data indent problems

PTSS 33885: Right justified text in columns outside groups was shifted 1 pixel right

PTSS 33898: Add Justification to Edit text and Icon

PTSS 33903: Tab Key not active on toolbar in C7

PTSS 33923: C7 needs automatic Center and Default Width/Height

PTSS 33924: Generator was sometimes loosing the @ at the beginning of the screen picture

PTSS 33929: open window and report error

PTSS 33934: Arrow keys dont work in window designer toolbar

PTSS 33943: Can not display screen structure but can compile

PTSS 33961: The Window Previewer default controls list now includes defaults for date and time picture entry controls

PTSS 33966: Difference between Structure Designer and compiled app

PTSS 33973: Opening window each time adds a SYSTEM MENU

PTSS 33981: Fix the problem in the work around for the error in Windows implementation of the EM_REPLACESEL message in RTF controls of version 4.1

PTSS 33981: Fix the problem in the work around for the error in Windows implementation of the EM_REPLACESEL message in RTF controls of version 4.1

PTSS 33982: You are now warned that deleting a GROUP or a QUEUE or changing it’s data type will cause all its components to be deleted

PTSS 34005: Hide Hidden Controls button showing fields improperly

PTSS 34023: Cannot use arrows on “Text” field on toolbox properties

PTSS 34028: Changing window font corrupt AT() when more that 1 tabs

PTSS 34036: When Group are use in listbox, please center vertically title that are not in the group

PTSS 34067: Incorrect usage of the %ControlParameter symbol

PTSS 34077: Source code remains and generates errors after a TAB control with a browse box on TAB is deleted

PTSS 34091: Controls within Group

PTSS 34092: Text control property PAD allows Alignment Indent parameter

PTSS 34102: Masked input was not initialized completely for @K picture if entry control had no the MASK attribute

PTSS 34112: Symbol information was not set after designating prefixed fields of some reference types

PTSS 34133: First non-blank character in template source line could be skipped during generation

PTSS 34138: GPF could occur after refreshing the Embed Tree if selected row corresponded to a template response item

PTSS 34144: Adding items to a Browse Box should default to Right Border, Resizable

PTSS 34148: List box formatter does not select items as in C6

PTSS 34158: The Window Previewer now warns you about missing files rather than just saying it cannot display the window structure

PTSS 34163: Extra EVENT:Accepted could be generated on leaving focus from combo-boxes

PTSS 34197: CHANGE: Provide additional info (in the Messagebox title) on querying “Are you sure?” on deleting an embed or a formula

PTSS 34198: The prefix of an alias’s field was not correct when dragging the field from the data pad if the alias was in the Other Files list

PTSS 34204: New C71 Properties Pad a little less user friendly – duplicates attributes.

PTSS 34205: GetTempFileName could create a 0-length file

PTSS 34212: PROPPRINT:Copies did not worked applied to Reports

PTSS 34219: Prompt is too long and it hides the drop-box from mouse

PTSS 34222: CHANGE: Procedures -> Calls in context menu

PTSS 34233: Toolbar gets duplicated when you open enough MDI tabbed windows

PTSS 34266: Mimic C6 listbox headers as much as possible

PTSS 34270: Various dialogs in the data pad and dictionary editor allowed the dialog to be minimized

PTSS 34278: Try to adjust font size in twips returned by the RTF control for more precise its conversion to points.

PTSS 34297: Frame caption buttons

PTSS 34307: The SQL drivers did not parse SELECT<10><13> correctly

PTSS 34335: Global data could be set to type MEMO or BLOB

PTSS 34357: Orphaned embeds could appear on adding the USE attribute to previously anonymous controls.

PTSS 34359: Windows type TCHAR in non-Unicode case is __signed__ character

PTSS 34369: The code generated for the dct convert program can now be compiled with older versions of Clarion, not just Clarion 7.x

PTSS 34370: The window Previewer could not preview a frame in an app that had toolbar items with a #SEQ attribute

PTSS 34379: Forcing of MENUBAR’s font color caused problems with displaying menus using non-Latin characters

PTSS 34394: GPF – Interop Example

PTSS 34404: Parsing the OVER attribute for nested fields from TXA

PTSS 34407: If button’s draw mode is OSdraw, WM_SETTEXT must be routed to Windows

PTSS 34416: Incorrect usage of the EXTRACT function in some templates

PTSS 34417:  Use of new conditional code generation breaks templates when used with C6.

PTSS 34212: fixed setting of PROPPRINT:Copies to report, not to PRINTER

PTSS 34437: Forcing of MENUBAR’s font color caused problems with displaying menus using non-Latin characters

PTSS 34439: Setting X Center or Y Center to True doesn’t change the other

PTSS 34445: Changing window width using Properties

PTSS 34466: The formula parser not supported omitted omittable parameters for user functions

PTSS 34467: An exception was thrown when terminating the IDE after using the formula editor

PTSS 34473: Incorrect deleting of a formula from the formula list

PTSS 34539: Disable/enable buttons to invoke designer or editor for procedure’s window and report depending from their status

PTSS 34545: Structure Designer cannot edit complex window

PTSS 34562: You could only enter screen and row pictures up to 20 characters in length.  The new limit is 255

PTSS 34588: Incorrect building of binary presentation of WINDOW/REPORT if a comment is the first line in a compound structure

PTSS 30062: Pre and Post build events did not work for Win32 projects

PTSS 30702: finding fields in files could fail

Aussie DevCon 2009 Wrap-Up

Aussie DevCon 2009 Wrap-Up

Well, it’s been a little over a week since I’ve back from the land Down Under. I think that the jet lag is finally over, and I wanted to share with all of you some thoughts about the conference.

First and foremost, I was to thank Jen and Geoff Spillane, Margaret and Ken Wragg, Maury, and all of the other Eden locals who once again truly manifest what the word HOSPITALITY really means.

Thanks to my colleague Pierre Tremblay, who endured the long plane ride over, fought off the flu that was circulating among some of the attendees, and delivered some interesting and useful training that targeted the Clarion.NET product.

Thanks also to Robert Zaunere, who also endured one of the worst flights ever (I’ll let him tell you) and delivered a marvelous demonstration of the Clarion.NET application generator and all things LINQ.

The attendees were treated to an early release of Clarion 7.1 – this was the build that I was using all week in the training. It’s intent was to reinforce the training and allowed them to get a first hand look at many of the new features of Clarion 7.1. Since that time we have added even more fixes and features, and with a little more testing left to do we hope to have it in all of your hands very soon.

It looks like I have a lot of documentation ahead of me, as Bob Zaunere introduced the LINQ to FILE provider and the many new methods behind them. You can read more on this in another blog on this site. That’s just the tip of the iceberg, there is a lot more to come!

Yes, we did see some whales up close and personal at the Whale Watching cruise. One whale came right up to the boat and circled it 4 times as he was as curious about us as we were of him. It was amazing to see such a gentle but huge creature in the wild. It was definitely worth the trip.

On the way back to the states, we stopped for one night in Sydney, and yes, I found a ten pin bowling center in Darling Harbour. The score wasn’t great, but just the act of being there was very special.

If you missed the conference, you missed a good one, but the guys at Clarion Live did a great job of keeping the rest of the world connected, and plans are in the works to make the conference available on DVD very soon.

Looking down the road, we hope to have our next US Developer’s Conference in 2010 soon after the Clarion.NET Gold release. Probably in Orlando in the second quarter if everything moves ahead as planned. It’s long overdue and something that we are all looking forward to doing.

A Whale of a Time!

I woke up this morning and suddenly realized that in two weeks I will be flying back to Eden in New South Wales for the 2009 Aussie Devcon!

I can’t wait to get back there and feel honored to showing you what we’ve been cooking over the last few months.

If you haven’t booked your seat at the conference yet, please visit the Aussie DevCon web site and reserve your place, as the time is fast approaching.  Here is the link to get started:

http://clarion.net.au/

You’ve got to be there! The progress and maturity of both Clarion 7 and the Clarion.NET products have been significant and dramatic in many areas since last year’s Aussie DevCon. Last year, Clarion 7 was in beta, and the Application Generator was still in its early stages. Today, we are just around the corner for Clarion 7.1, and the Application Generator is better than it’s ever been, including our past versions. I will be using Clarion 7.1 exclusively during the training and conference, and we hope that all of you will have it by then as well.

The training this year is titled “Exceptional Development Techniques in Clarion 7 and Clarion.NET”

With the many months of working with Clarion 7, I will be covering many topics that have been of major interest to our developers. One of the topics will be an in-depth look at the C7 Project System and leveraging it for maximum productivity for your single and multi-application projects.

Of course, I will be highlighting Version 7.1, and all of the new features and changes in it. We will be exploring the heart of application development with an in depth look at the Dictionary Editor and Application Generator, and explore development techniques and solutions via the template and embeds that you may have missed.

I will also be giving you a first look at the new ReportWriter, and hopefully you will see why I am so excited about this new addition to Clarion 7 and Clarion.NET.

Many of you have an interest in the triumverat of add-on products for Clarion 7, the In-Memory, Dynamic File, and Internet Protocol drivers, and we will devote a section of training to using these products in your development solutions.

I could go on, but see the full training and conference schedule for yourself at the following link:

http://clarion.net.au/index.php?option=com_content&task=view&id=33&Itemid=35

My colleague, Pierre Tremblay, will also be a presenter at the conference and training. Pierre has been using Clarion for almost as many years as I have, and his experience with .NET development has given him a powerful perspective and vision in presenting the latest Clarion.NET IDE.

 

Here are some comments from Pierre, and what he has planned for the conference and training.

Aussie Devcon 2009 is a real excitement for me! I have the privilege of presenting Clarion.NET WinForm and WebForm related topics during the conference and training.

Here are highlights of what we will discuss.

Regarding Clarion.NET and Winforms, we will talk about what is a WinForm application and look at the most popular controls used to build the user interface.  We will also talk about the Clarion.NET language and explore events, delegates, interfaces and look at examples using them. We tend to associate events with a user interface, but events in Clarion.NET are a different paradigm, and we will examine an example of that.

Speaking of user interfaces, we will also discover the benefits of using a UserControl in a WinForm application.

We will also discuss data binding. When you hear “data binding”, we often associate “data” with “database”, but you will see that data in data binding is different and much more generic.

We will look at the building blocks of ADO.NET. This includes a look at Datasets, DataTables and the role of the DataTableAdapter.

On the ASP.NET side of my presentation and training, we will first get in touch with AJAX. We will understand why most new projects involving ASP.NET those days involves AJAX. AJAX is so popular that it is now a built-in assembly in the 3.5 .NET  Framework.

We will explore ASP.NET master and content pages to see how we can develop a standard look and feel in our web applications.

We will also examine WebServices, how to create them and how to consume them.

Finally, there is a segment showing how to incorporate a 3rd party control library in the IDE. We will explore the steps to achieve that and we will also look at how we can create a QuickStart template that automatically includes the new library.

Our CEO, Robert Zaunere, will also be back for this year’s conference. Robert has some very exciting news and information to present at the conference. At the forefront is the first look at the Code Generation model for Clarion.NET. He will explain the architecture of the new templates, as well as demonstrate the application generation process. Another topic that he will be presenting is the new Clarion support for LINQ (Language-Integrated Queries).

***********************************

If that’s not enough, some of you might wonder why the conference was scheduled in October this year instead of the previous May. The answer is that the conference is being held right in the middle of Whale Watching season. Geoff Spillane has organized a very special Whale Watching Cruise for the morning of Friday 16th October. For those who attend both Training and Convention (the full 7 days) they will qualify for participation in the cruise for free. How cool is that?

***********************************

So hpefully now you know why Pierre and I are excited about Aussie DevCon 2009. Come and see what a great product Clarion 7 and Clarion.NET really is, and even greater are some of the developers that will be there. I am looking forward to meeting some of you for the first time, and for the warm reunion ahead for those of you that I met last year.

We hope to see all of you there!

LINQ to FILE Provider

Language Integrated Query (or LINQ, pronounced “link” for short), is a set of .NET technologies that provide built-in language querying functionality similar to SQL, not only for database access, but for accessing data from just about any source.  Simply put LINQ is a set of language changes and API’s that allow you to write SQL-like queries natively in your chosen .NET programming language. LINQ provides the same query model and operators for different data sources, such as LINQ to Objects, LINQ to XML, LINQ to SQL and now our new LINQ to FILE provider.  And LINQ isn’t limited to traditional data sources, there are many more LINQ to “xyz”  providers, for example here is a list of some non-typical LINQ providers;

  • LINQ to WebQueries by Hartmut Maennel handles searches in the SiteSeer and MSDN Web sites.
  • LINQ to Amazon by Fabrice Marguerie, a co-author of the LINQ in Action book. LINQ to Amazon returns lists of books meeting specific criteria.
  • LINQ to Flickr by Mohammed Hossam El-Din (Bashmohandes) uses the open-source FlickrNet C# library as its infrastructure.
  • LINQ to Google Desktop supports queries to the Google desktop search engine

and the full list of available providers is much longer, if you’re interested in seeing more LINQ providers follow this link

Part of the beauty of  LINQ is that the exact same syntax is used to query (and potentially update) any data source that implements IEnumerable.  LINQ defines a set of general purpose standard query operators that allow for traversal, filtering, and projection operations to be expressed in a direct, yet declarative way in any .NET-based programming language.  Let’s take a look at it in some Clarion# code using the new LINQ to FILE provider:

In the data declaration section you declare IFileQuery instances of a file’s record type:
!  ——Data declaration section——
ClassesQuery            IFileQuery<Classes.Record>
CoursesQuery            IfileQuery<Courses.Record>

CODE
myQuery? = from class in ClassesQuery |
where class.RoomNumber < 10 |
select class

The local variable myQuery? is initialized with a query expression. A query expression operates on one (or more) information sources by applying one or more query operators from either the standard query operators or any domain-specific operators.  This expression uses two of the standard query operators: Where, and Select, and its very obvious this query will return all records where the the RoomNumber column has a value < 10.

The arguments to the Where and Select operators are called lambda expressions, which are essentially fragments of code. They allow the standard query operators to be defined individually as methods and strung together, and these methods form the basis for an extensible query language.

Lambda expressions are one important piece of the LINQ query architecture. Extension methods are the other. Extension methods combine the flexibility of dynamic languages with the performance and compile-time validation of statically-typed languages. We’ll delve into extension methods in another post.

Let’s look at another example:

myQuery? = From class in ClassesQuery |
Where class.RoomNumber < 10 |
OrderBy class.ClassNumber, class.CourseNumber Descending |
Select New {class.ClassNumber, class.CourseNumber, |
class.RoomNumber}

This query introduces the OrderBy and Select New operators. If you’ve had any exposure to SQL then this is very easy to understand, and even if you have no SQL experience its still easy to see what this query will return; a sequence of data objects where roomNumber is < 10, ordered by Class/Course numbers descending. What isn’t obvious is that “Select New” is only returning the class.ClassNumber, class.CourseNumber, and  class.RoomNumber columns.

There are many more features provided for in the new LINQ to FILE provider, here is a complete list of operators that the LINQ to File provider implements:

  • Where
  • Select
  • SelectMany
  • OrderBy/OrderByDescending
  • ThenBy/ThenByDescending
  • GroupBy
  • Join (inner)
  • GroupJoin (left)
  • Sum
  • Average
  • Min/Max
  • Count/LongCount
  • DefaultIfEmpty (usually used to provide “flat” left join)
  • Skip
  • Take
  • First/FirstOrDefault
  • Last/LastOrDefault
  • ElementAt/ElementAtOrDefault
  • Single/SingleOrDefault
  • TakeWhile
  • SkipWhile

Certainly you can already write your own code and define your own Views to provide the same  functionality, but with LINQ you don’t have to.  Besides a very simple and elegant syntax, the LINQ To FILE Provider is fast.  In our testing comparing the LINQ to FILE Provider to our plain LINQ to FILE, and to a standard VIEW structure, the tests showed the LINQ to FILE Provider was often more then twice as fast as a standard VIEW, and it always provided at least equivalent performance..

If all the LINQ to FILE Provider did was implement great query functionality it would be very powerful and very useful.  But it does much more, under the covers it implements equivalent functionality to the ABC library, except in this case its a managed code equivalent to the ABC library functionality. In a future article we’ll take a look at how we work with auto-incrementing, Insert/Update and Delete(s), and maintaining RI relations using the new LINQ to FILE Provider.

LINQ-style data access is available for all 3 .Net platforms (Winform, WebForm and Mobile). LINQ in general, and the new LINQ to FILE provider are key parts to the new templates for .Net code generation. And while you won’t need to write LINQ queries, (you’ll construct them visually and the templates will generate Dictionary related RI/AutoInc/CRUD statements for you) its still nice to know how easy it will be to create your own queries.

I’ll be doing a couple sessions on LINQ-style data access and the new LINQ to FILE provider at the upcoming Aussie DevCon, and I’ll be demonstrating how this technology fits into our code generation architecture using the new .Net templates.

New Properties for 7.1

Three new properties:

PROP:TextLeftMargin and PROP:TextRightMargin

The PROP:TextLeftMargin, PROP:TextRightMargin properties get or set the value of left and right margins for text in ENTRY, SPIN, COMBO, TEXT, RTF controls and in drop-down LIST controls.  The problem we had was that the old (pre-C7) fixed margin of 2 pixels wasn’t always correct for some of the newer fonts and font sizes.  The original C7 implementation calculated margin values based upon the control’s type, its font, and where the control is placed; in a WINDOW or REPORT, and some additional aspects.  However the new default margins could be incorrect in some specific situations like one which was described in the PTSS where large font sizes were not displayed correctly in a Entry control.  These two new properties allow you to justify margins in all cases, and they allow you to set different values for the left and right margins.

Syntax:

?control {PROP:TextLeftMargin} = n
?control {PROP:TextRightMargin} = n

Where, n is an integer constant or expression greater or equal to 0.  It sets the margin using the current units of the WINDOW or REPORT that owns the the control.
Negative values are treated as follows:
a value of -1 : the RTL uses the Windows default margin value which is dependent upon the control’s font
for all other negative values :  the RTL uses the C7 default margin value which is very close to Windows default value but takes into account some additional aspects such as the control type

PROP:LastChanceHook

This is a new write-only SYSTEM property which allows you to specify the hook function invoked if an exception has occurred. The hook function allows you to display
information about the exception and choose an action:

  • continue execution of the thread where exception occurred (if the exception isn’t fatal)
  • stop the thread (or entire process if the exception occurred in the main process thread) without invoking the RTL exception handler
  • execute the RTL exception handler

The RTL exception handler allows you to show information about the exception and asks for an action, possible actions:

  • stop the thread where exception occurred
  • stop the entire process
  • invoke the system debugger
  • generate a debug event if the program is already running under debugger

The implementation provides a far more intelligent way for handling program termination in case of some abnormal behavior then the existing ‘Do you want to GPF?” message.  It also allows you to set the exit code (error level) returned by the program to the OS upon program termination without the necessity to terminate the program immediately.

Summary; this allows end users to avoid having to terminate an entire program if some error occurred in one of its threads.