Skip to content

Alpha 2

Build Notes for Alpha 2

The temporary page takes most (but not all) of the entries in the chronological Build Notes and sorts them by category. Only those items that changed between Alpha 1 and Alpha 2 are listed.


Windows Framework

  • Labels now do a better job of vertically aligning themselves with Form and dbForm controls. This is particularly noticeable with non-standard form heights. The alignment logic change is applied only when the label and form use the same font, pointheight, fontsize and there is an additional row offset applied (label_row_offset). If these settings were customized, previous behavior is preserved.

  • Combos: alignment of combo controls is complicated because Windows determines combo form height and text placement. Text is not vertically centered by Windows, so perfect alignment with labels/textboxes is not guaranteed. You can influence label alignment by setting the combo's size height to different values (e.g., Set Size to 12 80) — the textbox aligns as if the combo were that height even if Windows does not actually change it.

  • New property pbApplyComboFormHeight: allows setting the actual height of a ComboForm's form. Default is False — use with caution. Windows handles combo internals oddly; text position does not change when height changes, so alignment may still be imperfect. If set to True, test across all display DPIs your application will run under.

  • Combos no longer set the Size height to 100 in the end constructor. The size you set remains, even if Windows doesn't actually adjust the height. This is important because label logic now uses this to determine placement.

  • New external function GetWindowtRect added to WinUser.pkg. If you have this declared elsewhere, you can remove your declaration (a compiler error will point to the line).

  • Fixed BT 6607: pbBypassDDFieldBuffer in a changed edit class moves caret when leaving the control.

  • Added cSplitButton class (requires Vista or above). Requires vdvm18.0 build 11.

  • Added cCommandLinkButton class (requires Vista or above).

  • Added dbSuggestionForm class — Windows version of cWebSuggestionForm.

  • Changed Button class to support images via an imagelist, support text and images, drop downs and support for the Windows shield.

  • Added SetPopupLocation to cCJContextMenu providing a way to specify a specific location for a context menu (used by button drop downs).

  • Added explorer-style appearance support for TreeView class (pbExplorerStyle).

  • Added support to allow view and dbView objects to be invoked modally using Popup_Modal.

  • Updated components to CodeJock 16.3.0. The most notable difference is that the new controls fix toolbar image display problems at higher DPIs.

  • New command bar themes:

    xtpThemeOffice2013
    xtpThemeVisualStudio2012
    xtpThemeVisualStudio2012Light
    xtpThemeVisualStudio2012Dark
    

  • Report Control - new property peReportTheme (ComVisualTheme) supports:

    xtpReportThemeDefault
    xtpReportThemeOfficeXP
    xtpReportThemeOffice2003
    xtpReportThemeOffice2003Luna
    xtpReportThemeOffice2013
    xtpReportThemeVisualStudio2012Light
    xtpReportThemeVisualStudio2012Dark
    xtpReportThemeVisualStudio2012Blue
    xtpReportThemeExplorer
    xtpReportThemeResource
    xtpReportThemeNone
    
    The default is xtpReportThemeNone. When another theme is applied to peVisualTheme, peColumnStyle is not used. ComColumnStyle is deprecated per CodeJock; prefer ComVisualTheme. Use peVisualTheme and peColumnStyle as design-time properties only — changing them after the control has been paged creates a new PaintManager and resets existing settings. Prefer DataFlex messages peVisualTheme and peColumnStyle over the COM counterparts.

  • Added ability to sort combo lists in cCJGridColumn and cDbCJGridColumn:

  • New property: pbComboSort (default False). When True, the combo items for a column are sorted when the grid is activated. This changes the actual order of the tComboItemData array. If combo items are added after the grid has been displayed, they are appended to the end of the list and will not be sorted until ComboInitialize is sent. Update documentation for ComboInitialize to note sorting behavior when pbComboSort is True.

  • Changes in cRichEdit and cTextEdit (runtime):

Property integer ReadOnlyColor
  • Sets the background color when the edit object is read-only (read_only_state = true).
  • clNone means no change; any other color uses the specified color. clBtnFace is a good choice.
  • ReadOnlyColor can be changed dynamically; if read_only_state is true you'll see the change immediately.
  • Defaults:

    • cRichEdit and cTextEdit: clNone (previous behavior).
    • cDbRichEdit and cDbTextEdit: clBtnFace (changes appearance when Read_Only_State is True).
  • Changes in cDbTextEdit and cDbRichEdit (respect DD flags and read-only behavior):

Previously these classes did not respect the DD's no-enter and no-put status. Now they do, and a new option allows you to specify whether a no-enter edit control should be disabled or set to read-only:

Property Boolean pbNoEnterReadOnly
  • If False, a DD NoEnter setting results in the control being disabled (cannot take focus).
  • If True, the control is set to read-only (can take focus but cannot be changed, useful for copy operations on multi-line text).
  • Default is True.
  • ReadOnlyColor default is clBtnFace for cDbRichEdit/cDbTextEdit, giving a disabled appearance while allowing navigation and copy.

  • Data Dictionaries:

  • Merged change to make SQL-like strings work with DB2 while still working with MSSQL.
  • Added symbol SYSCONF_COMCTL_REV for SysConf().
  • Packages now test SYSCONF_COMCTL_REV to determine new feature support. When the revision is below 6.0 (i.e., no manifest), combos behave as they did before and pbApplyComboFormHeight is not used. This preserves pre-manifest behavior (not to encourage no-manifest apps, but to maintain compatibility).
  • Added information to dd_debug.dg about alias table DDs: the misc tab will now indicate if a DD is defined as an alias and the master table/DD (requires alias DD created using the new 17.0 logic).
  • Added tWinButton_ImageList struct to tWinStructs.pkg, used by Button class for images.
  • Changed tWebSuggestion to tSuggestion and moved to tSuggestion.pkg (used by cWebSuggestionForm and dbSuggestionForm).
  • Changed cCJGrid to ensure Enabled_state redraws the grid (disabled grey appearance now applied dynamically with CodeJock 16.3 controls).

  • cUIObject:

  • Added CreateNamed. Works like Create but accepts an extra parameter for the local name of the object:
    Get CreateNamed (RefClass(cImageList32)) "oImageList" to hoImage
    
  • Create still creates the object name oObject. CreateNamed makes objects easier to debug by giving them meaningful names (you still access dynamic objects by handle, not name).

  • Added new class/package: cTimer

  • Interface:

    • pbEnabled — determines if the timer is enabled. Default False.
    • piTimeOut — timeout interval in milliseconds. Default 1000.
    • OnTimer — called on each timeout.
  • Marked DFTimer as obsolete.

  • Changed dbSuggestionForm to use cTimer instead of DFTimer.

  • New Data Dictionary method ErrorMessageTableName and Flexml changes:

  • pbReadyState and LastParseError now appear in cXMLDomDocument.
  • Improved XML docs.

  • 6397: Show the table name in "Can't save/delete file xx required" errors. When a DDO structure is incomplete, Request_Save / Request_Delete now display the table name and number, e.g.:

Can't Save. File 25 (Customer) required
Can't Delete. File 25 (Customer) required

This uses the new DD function Get ErrorMessageTableName (see 6511), which developers can augment.

  • 6511: Extend DataDictionary Extended_Error_Message with a function to supply table information:
Function ErrorMessageTableName Integer iTable Returns String

By default it returns the logical table name (df_file_logical_name). Developers may override to provide a different name.


Flexml and XML Changes

  • 6546: Make piReadyState, pbReadyState and ONREADYSTATECHANGE public.

  • cXmlDomDocument's pbAsync property now defaults to False. In many cases this will not impact applications because they either already set it to False or it now behaves as expected.

  • New cXmlDomDocument function LastParseError.

  • Exposed cXMLDocument read-only property pbReadyState.

pbAsync

pbAsync determines if loading an XML document (LoadXMLDocument) should be asynchronous.

  • If pbAsync is False, LoadXmlDocument waits until the document is fully loaded and parsed; the return value accurately reflects success:

    Get LoadXmlDocument of hoDoc to bOk
    If bOk Begin
        // you can now process your XML document
    End
    

  • If pbAsync is True, LoadXmlDocument returns immediately with True even if the file is not yet fully loaded. When loading asynchronously, you must verify both that the document has loaded/parsed (pbReadyState) and that it parsed successfully (LastParseError).

Example asynchronous usage (idle handler checks for completion):

Use Windows.pkg
Use Flexml.pkg

Object oXMLLoader is a cObject
    Property Handle phoXMLDoc
    Object oIdler is a cIdleHandler
        // use idle events to test when loading is complete
        Procedure OnIdle
            Delegate Send OnIdle
        End_Procedure
    End_Object

    Procedure StartXMLLoad
        Handle hoDoc
        Boolean bOk
        Get Create (RefClass(cXMLDOMDocument)) to hoDoc
        Set psDocumentName of hoDoc to "http://Some_URL_that_Loads_slow"
        Set pbAsync of hoDoc to True // we are not waiting
        Get LoadXMLDocument of hoDoc to bOk // loading may not be done yet
        Set phoXMLDoc to hoDoc
        Set pbEnabled of oIdler to True // start the idle handler
    End_Procedure

    // check if the document is done loading. If so, process it.
    Procedure OnIdle
        Boolean bReady
        Integer iErr
        Handle hoDoc
        Get phoXMLDoc to hoDoc
        // is it loaded and parsed.
        Get pbReadyState of hoDoc to bReady
        If (bReady) Begin
            Set pbEnabled of oIdler to False
            // did it parse successfully
            Get LastParseError of hoDoc to iErr
            If (iErr=0) Begin
                Showln "document is loaded and ready"
                // Send ProcessAndDisplayXMLDocument of oSomeObject hoDoc
            End
            Else Begin
                Showln "document could not be loaded"
                // Send ProcessAndDisplayXMLError of oSomeObject hoDoc
            End
            Send Destroy of hoDoc
            Set phoXMLDoc to 0
        End
        Else Begin
            Show "." // just to show we are waiting.
        End
    End_Procedure
End_Object

Object oMain is a BasicPanel
    Set Label to "My Main Project"
    Set Location to 10 10
    Set Size to 100 100

    Object oButton1 is a Button
        Set Location to 10 10
        Set Label to 'Button'
        Procedure OnClick
        End_Procedure
    End_Object
End_Object

Send StartXMLLoad of oXMLLoader
Send Activate of oMain
Start_UI

Note: In most cases it's simpler to load synchronously; LoadXmlDocument's return value is sufficient.

pbReadyState

pbReadyState (read-only) returns True when an XML document has been loaded and parsed. It does not indicate whether parsing succeeded — check GetLastError (or LastParseError) after pbReadyState is True.

GetLastError / LastParseError

GetLastError / LastParseError returns the last parsing error encountered by a document load and parse. Use it after verifying pbReadyState to determine parse success.

pbResolveExternals

pbResolveExternals determines if an XML document should attempt to resolve external schema or DTD references (e.g., xsi:schemaLocation). Default is False. Automatic resolution can be problematic; prefer adding schemas manually with AddExternalSchemaFile or AddExternalSchemaDocument for better control and diagnostics.

Note: MSXML (and therefore Flexml) disables use of DTDs for validation for security reasons. This can make pbResolveExternals, AddExternalSchemaFile, and AddExternalSchemaDocument fail when a DTD is required. If DTD validation is needed:

Set pbDomSecondLevelProperty of hoDoc "ProhibitDTD" to False

Note: "ProhibitDTD" is case-sensitive as shown.

When using AddExternalSchemaFile / AddExternalSchemaDocument, always test the return value — failures can occur for many reasons (cannot load the document, cannot resolve externals, DTD blocking, etc.). AddExternalSchemaDocument is generally more flexible for debugging.


Web Framework

  • Removed invalid check on client-side data sorting that produced the "Client-side sorting is only allowed with manual data loading." error.

  • Improved styling of cWebGroup so it inherits the color of its parent container (improves modal dialog rendering).

  • Fixed focus errors under Internet Explorer 8 on Windows XP.

  • cWebButton now prevents OnSubmit from being triggered when Enter is pressed while it has focus (fixes Enter on Cancel button issue in modal dialogs).

  • cWebEdit now has pbStopOnSubmit to prevent OnSubmit when Enter is pressed; instead it inserts a newline (default).

  • New pbShowHeader property on cWebList to hide the entire header.

  • cWebColumnCheckbox now has peAlign to center or right-align the checkbox within the column.

  • New pbReadOnly property on cWebForm, cWebEdit, and cWebColumn — disables text entry but the control still takes focus and prompt buttons still work.

  • New property piCurrentColumn on cWebGrid indicates which column has focus (first column is 0). Use GetColumnObject to get the column object handle by its index.

  • Improved numeric input filter to allow entry when text is selected.

  • Added API for manipulating cWebList / cWebGrid data without refreshing the entire list (manually loaded lists only):

  • DataSetUpdateRow
  • DataSetAppendRow
  • DataSetInsertRowBefore
  • DataSetDeleteRow

  • Simplified initialization of pbServerOnClick of cWebMenuItem.

  • cWebColumn classes now have pbValueAsTooltip to enable/disable tooltips showing cell values.

  • OnDefineTooltip event available on list/grid columns to customize tooltips.

  • Previewer improvements:

  • Show disabled & hidden tabs (select them in Code Explorer).
  • Properly show selection of tab/card container.
  • Allow opening disabled menus and menu items.
  • Fixed scrollbar appearance when selecting the webapp object inside the previewer.
  • Studio now controls whether the previewer performs a lazy update (removing timeout can reduce "Invalid CDS Nodes" errors).

  • Improved error message for cWebList if data doesn't contain enough columns.

  • Fixed a number of sample demo and file-upload related issues:

  • DemoQuestionDialog fixed to not call Cancel incorrectly.
  • psMask now defaults to "" instead of C_WebDefault.
  • Fixed week number calculation to follow ISO rules (week determined by Thursday).
  • Date picker now shows displayed year instead of selected year in pulldown (consistent with month menu).
  • Fixed piScreenHeight of cWebApp which was providing screen width.
  • Prevented flashing of keyboard on mobile when prompt button clicked.
  • New OnOrientationChange event on cWebApp for mobile.
  • Refactored menus:
    • Long captions now widen the menu instead of wrapping.
    • New pbShowMenuOnHover on cWebMenuBar (menus now open on click by default).
    • Keyboard control for menus (arrow keys once opened).
    • Improved menu positioning when page is scrolled.
  • Fixed faulty session cookie handling preventing re-login after refresh.
  • Progressbar with piValue zero now hides the bar correctly.
  • Fixed serialization bug in the grid causing errors on empty grids.
  • Fixed multi-file upload error when running in debugger.
  • Fixed memory leak on file upload controls.
  • Implemented psAccept property on upload controls (HTML5 browsers) to filter file types by mime and extension.
  • Added StartUpload procedure to cWebFileUploadForm for pbAutoStart behavior.
  • Fixed pbAutoStart property.
  • Fixed DecryptKey to avoid memory access violation.
  • Renamed phoDragArea to phoDropZone (doc already used this name).
  • Fixed file upload prompt button display on IE8.
  • Updated styling of new controls for all themes.
  • cWebProgressBar now applies "WebProgressBar" CSS classname.
  • Fixed date-time parsing so hour can be changed.
  • Fixed usage of date mask within a cWebColumn which caused errors.
  • Ensured OnChangeRights is triggered during WebApp loading.
  • psMask on data entry objects can override the DD value.
  • Improved numeric entry filter:
    • Both , and . accepted as decimal separator so numeric keyboard works; the correct separator is displayed.
    • Improved handling of - when text is selected.
  • Rewrote date entry filter:
    • Typing while text is selected is allowed when result stays valid or part of valid date.
    • Added datetime support.
  • Improved Windows mask entry filter behavior when text is selected.
  • Added support for datetime data types, including masking and input filtering.
  • Fixed order of LoadWebApp so initial view is determined after OnLoad of oWebApp — setting phoDefaultView and performing login from OnLoad works again.
  • Fixed numeric filter for IE8.
  • Fixed cWebColumnCombo showing value instead of description.
  • Changed cWebButton pbShowWaitDialog so its initial value doesn't override a SetActionMode in the OnLoad event.

Web Services

  • Addressed a JSON Web Services bug: posting an integer parameter with large numbers was not properly handled (it only seemed to read the first character for numbers with 7+ characters). This was fixed.

Studio

Studio WSDL Parser

  • Added support for more schema constructs (including handling schemas with nested elements and improved type resolution). Requires change in cClientWebService.pkg.
  • Added support for nesting in schemas.
  • Fixed bug where choice enumeration define names were not converting - to _.
  • Optional support for treating elements with no type information as strings (controlled by a checkbox; disabled by default). Note: technically anyType is different from string — enabling this parses such elements as xs:string for convenience when the provider did not provide types.
  • Changed defaults for nullable and nillable support to False.
  • Improved ability to resolve nodes to built-in types, producing fewer unneeded structs.
  • Improved detection of bare-response types when the main response contains attributes.
  • Fixed parsing bugs with complexType attributes.
  • Fixed arrays defined via did/extension oddities.

Other Studio fixes and improvements

  • Fixed image error reporting in Create New dialog and updated 32x32 image error bitmap.
  • Create New now supports .ico files for custom items.
  • Fixed bug when clicking Field Chooser in Table Viewer if another panel has focus (reported by Bob Cergol).
  • Fixed Bug 6643: Add validation table dialog needs better piMinSize.
  • Fixed Bug 6630: Long DataDictionary field labels with double quotes caused modeling error.
  • WSDL parser previously generated wrong source for base64 params — fixed.
  • Modified launch of WebApp Check tool to pass -r parameter so it runs automatically when loaded.
  • Table Editor:
  • Default data type when creating a new column is now char(10).
  • Adds an extra column for the DF Type when modeling an SQL table (only enterable if driver native type metadata specifies > 1 allowed DF type).
  • df_field_type attributes in Properties Panel are read-only.
  • Support for native SQL datetime types that map ambiguously to multiple DataFlex types improved.
  • "Register WebApp" button in Project Properties and OK button in Create Virtual Directory dialog now include the Windows shield icon.
  • Visual Designer support added for Button image/shield properties, cSplitButton, cCommandLinkButton, and TreeView pbExplorerStyle.
  • Button properties:
    • pbShield
    • psImage
    • piImageSize
    • piImageMarginLeft
    • piImageMarginRight
    • piImageMarginTop
    • piImageMarginBottom
    • peImageAlign
  • cSplitButton, cCommandLinkButton (psNote), TreeView (pbExplorerStyle)
  • Added cSplitButton and cCommandLinkButton to the Class Palette.
  • Modified appearance of Studio CJ grid controls to use subtle "small dots" grid lines for smoother transition to CodeJock controls.
  • "Nudge Objects" panel dialog updated to use Button psImage property with correct transparency.
  • Fixed Table Editor bug when Table Viewer open to same file — Table Viewer now properly tests whether the table is open/changed and avoids closing incorrectly.
  • Added recursive expand tree item to Code Explorer context menu and improved context menu captions.
  • Debugger variable evaluation tooltips now restricted to 600 characters (max 4 lines of 150 chars). Embedded line breaks preserved up to max width.
  • Cleaned up some Create New template descriptions.
  • Refined Code Editor column information tooltip.
  • Table Editor now removes "unknown type" item from combo list after column creation. The 'unknown type' item renamed to 'choose a type'.
  • Removed old Icon Extractor module and replaced with Windows Open File Dialog (fixes crash in Windows 8 and modern icon formats).
  • Fixed problems with column information tooltips and Data Dictionary Modeler auto increment dialog (reported by Vincent).

Connectivity / CLI CKs (Embedded SQL)

  • New sql.pkg for embedded SQL:
  • Several performance improvements (speeding SQLColumnValue).
  • New functions:
    Function SQLFetchRowValues Returns String[]
    
    Fetches a row and returns all columns in an array.
    Function SQLFetchResultsetValues Returns String[][]
    
    Fetches all rows of a result set and returns them as a 2-dimensional array.
  • Removed command interface (still available in sqlold.pkg).

  • Special Note: new sql.pkg requires connectivity kits version 6.0.0.28 or later. The previous version is available as sqlOld.pkg for earlier kits.

  • Fixes:

  • On a SQL Server datetime column: changing DF_Type from DF_Date to DF_Datetime sometimes set SQL type to "unknown type" — fixed.
  • Setting Native_Type to "unknown type" previously generated an unsupported backend error — fixed.

WebApp Check

  • Added "WebApp Check" menu item to run the DataFlex WebApp Check tool.
  • Modified the launch of WebApp Check tool to automatically run WebApp Check when loaded (passes -r).

Flexerrs / Misc Fixes

  • 5834: Move external function declaration out of cLinkedLabel.pkg.
  • 4872: Add special Destroy_Object to cCjStatusBar class.
  • 5865: Reset ghoApplication to 0 in Destroy_Object of cApplication.
  • 6494: Lowercase in DD_OperationChecker at the wrong location — fixed.
  • 6464: LoadData in cdbcjgridpromptlist queries but does not use phoInvokingObject — fixed.
  • 6642: Entry_Client_mixin used define_Auto_Locate twice — fixed.
  • 6470: ListRowCount does not work for dbComboForm class — fixed.
  • 6513: Add metadata tag for Transparent_State to be used for a checkbox.
  • 6398: Allow specifying the class name for the RequestColumnSearch dialog:
  • New function: Function CreateGridSearchDialogObject Returns Handle.
  • RequestColumnsSearch now calls CreateGridSearchDialogObject which returns a search dialog object (by default cCJGridSearchDialog). You may augment this function (advanced technique).
  • 6528: Extend ComboForm class with Form_Margin support:
  • Behavior changed to better support horizontal scrolling while entering text.
  • If entry_state is True, horizontal scrolling is always allowed. Form_Margin controls text limit:
    • If Form_Margin is 0 or default -1, no text limit is applied.
    • If Form_Margin > 0, ComboForm's text limit is set to Form_Margin.
  • Normally a ComboForm has Form_Margin of 0. Prior to 18.0, dbComboForm had Form_Margin of 100; in 18.0 a dbComboForm default is -1 (meaning default). For ComboForms we do not set Form_Margin to the database field length (unlike dbForm) because ComboForms often contain other text (validation lists). Set Form_Margin explicitly if you know the limit.
  • When Entry_State is False, previous behavior applies.

  • Real-to-string casting adjustments:

  • When a number is real, precision is reduced to 15 digits to mask floating-point inaccuracies (e.g., .1, 22.05, 72.35). Integers are treated differently to avoid scientific notation issues (e.g., 8e8).
  • No impact on WebApps that serialize as JSON strings.

  • Studio WSDL parser changes (see Studio section).


CLI / All CLICKs (Embedded SQL)

  • See Connectivity/CLI CKs above for sql.pkg changes and new functions.

Help / Documentation

  • Added F1 support for Help.
  • Minor bug fixes and button behavior changes.
  • Installation Mode:
  • Now runs automatically if called with the parameter.
  • Improved the "you MUST reboot" message.
  • Improved IIS 32-bit detection.
  • Stand-alone mode:
  • Added CGI restrictions test.
  • Misc fixes and typos.
  • Updated help file and install automatically.

  • Implemented CodeJock grid in the tools:

  • Added "find error number" form in the toolbar.
  • Sortable on all columns.

  • Documentation additions and updates:

  • Added doc for new classes and members:
    • Button
    • cSplitButton
    • cCommandLinkButton
    • TreeView pbExplorerStyle
    • cWebFileUploadButton
    • cWebColumnLink
    • cWebColumnButton
    • cWebColumnImage
    • cWebColumnDate
  • Added doc for pbComboSort and ComboInitialize.
  • Added doc for edit controls' ReadOnlyColor and pbNoEnterReadOnly.
  • Updated docs that use tWebRow to the new version of tWebRow (please review).
  • Updated "What's New" with preliminary Windows Framework additions.
  • Updated information about web properties.
  • Language Reference: added index entries for DF_ASCII, DF_BCD, DF_DATE, DF_DATETIME, DF_OVERLAP, DF_TEXT, DF_BINARY and linked them to the "DF_FIELD_TYPE" topic in the Database API Attributes book.

See Also