What's New in DataFlex 2024
What's New in DataFlex 2024 - 24.0 (Released March 2024)
DataFlex 2024 introduces a Canvas web control, SPLF Encryption, an improved Grid Layout Designer, Data Dictionary (DD) structures on web tab pages, and more.
Watch the What’s New in DataFlex 2024 Learning Center course: https://learning.dataaccess.com/courses/whats-new-in-dataflex-2024/
Changes in DataFlex 2024 Build 24.0.29.57
- Fixed an issue causing leaking handles in WebApp Server caused by process pool logic improvements.
- Fixed a security issue in Flex code caused by FlexTron refactoring.
- Fixed an SPLF license check which allowed one less than it should.
Changes in DataFlex 2024 Build 24.0.29.54
- This update addresses a security issue in
DebugBuffer.js. The vulnerability is quick to mitigate. It is highly recommended to remove bothDebugBuffer.jsandDebugBuffer.cssfiles from any DataFlex web applications running in production.
It’s also recommended for developers to upgrade their DataFlex Studio installations. When working with DataFlex Studio versions that are no longer supported, developers and system administrators can safely remove both DebugBuffer.js and DebugBuffer.css files.
Changes in DataFlex 2024 Build 24.0.27.52
- Fixed a bug causing the JavaScript Engine to hang with nested tab/card containers.
- Fixed a dynamic object container leaking web objects.
- Fixed an issue with minimum pool size of 0 processes.
Changes Between the Final Release and Previous Versions in the DataFlex 2024 Release Cycle
This page lists all new features in DataFlex 2024.
See these specific change lists: - DataFlex 2024 Final Release Changes - DataFlex 2024 Release Candidate Changes - DataFlex 2024 Beta 2 Changes
Date Handling Changes in DataFlex 2024
When working with the SQL Executor, some developers encountered issues when the database contains 01-01-01 dates (also known as zero dates). The DataFlex Connectivity Kit (depending on its configuration) writes these dates for empty dates. One of the problems was that these dates sometimes get converted into 01-01-2001. Note that this was not caused by cSQLExecutor, but happens later when using the value (or displaying it in the debugger).
We added a new attribute, DF_DATE_4_STATE_ONLY_ON_PARSE (doc), that fine-tunes this behavior.
- If
DF_DATE_4_STATE_ONLY_ON_PARSEis set toTrue, it will only apply the epoch logic when converting from a string to a date and the year only has two digits (e.g., year01will be converted to2001, but year0001is untouched). - This behavior stems from the
DF_DATE_4_STATEimplementation in the runtime, which adds 2000 (or 1900 depending on theDF_EPOCH_VALUEsetting — see DF_EPOCH_VALUE) when converting between dates and strings. - If set to
False, string-to-date conversion will use theDF_DATE_4_STATE/DF_EPOCH_VALUElogic.
We also fixed Windows controls in DataFlex to respect the DF_DATE_4_STATE_ONLY_ON_PARSE attribute. Previously, dates of 01/01/0001 were converted to 01/01/2001 when displayed in controls with a Date or DateTime mask.
For DataFlex 24.0 the new attribute defaults to False to maintain compatibility. It is intended to be set to True for an entire application. Depending on test results, we intend to default the attribute to True in a future DataFlex revision.
New Features
cWebDrawing class
The new cWebDrawing web control allows developers to create vector drawings in web applications from DataFlex code. Use cases include charts, maps and small games. See it in action in WebOrder under Demo > Controls > Drawing. See cWebDrawing for more information.

SPLF Encryption
WebApp Server now encrypts the connection between the SPLF (Security, Performance, Load Balancing and Failover) master and the application nodes. An encryption token can be configured per node to improve the strength of the encryption.

Improved Grid Layout Designer
The Web Designer in the Studio has been enhanced for grid layout:
- A new popup for editing grid rows and columns supports inserting and removing rows/columns.
- The designer context menu can convert from flow layout to grid layout. It fills in missing property settings (
psRowHeights,piRowCount,piRowIndex) by analyzing existing flow layout code.
See WebApp Designer for details.

Data Dictionary Structures on Web Tab Pages
Web container controls like cWebTabPage, cWebCard, cWebPanel, and cWebGroup can now contain their own DDO (DataDictionary Object) structure. No additional calls to AddDDOStructure are necessary when Main_DD is set, and Data Dictionary object names no longer need to be unique within a view. The DDO Explorer panel in the Studio has been extended to display multiple DDO structures.

Improvements and Bug Fixes
Connectivity
- Fixed SQLExecutor crash on DB2_DRV.
- Fixed studio crash when setting any TABLESPACE to blank on DB2_DRV.
- Fixed DF_FILE_CHANGED issue when comparing trimmed to untrimmed values.
- ODBC_DRV did not handle empty strings correctly for
varchar2in Oracle tables.
cSQLExecutor
piSqlAffectedRowsreported as 0 on queries with warnings — fixed.- Fixed
SQLSetParameter'Invalid Precision Value' error when called with an empty string. - Now sets
ErrtoTruewhen a parameter is not found. - Now returns correct column types with
SQLColumnInfo. - Fixed crash when calling SQL function from
OnSQLPreExecute. - Extended the
tSQLColumnInfostruct with additional details. - Now shows correct column and row on conversion error.
- Now returns large decimal and GUID values.
Data Dictionaries
- Fixed the Data Dictionary Force Put field option for web controls.
- Prevented
Auto_Fill_Statefrom slowing down web apps on startup.
Packages / JavaScript Engine
- Entering an invalid date in a FlexTron app could result in an endless loop of errors — fixed.
JavaScript Engine
- JavaScript Engine crashed on empty
cWebDateForm— fixed.
Packages
- Added more parentheses to
SQLStrAppendto properly handle multiple appended filters. - In Firefox, floating label did not automatically move to the top of the control when it gained focus — fixed.
- Improved error handling of
cWebResourceManagerProxy. - Extended
dd_debug.dgandwebdd_debug.wowith table/DD relationship information. piUpdateColumnofcCJGridis now restored inOnRestoreDefaults.- Fixed Unicode issue with
OnEndLabelEditof the TreeView class. cSQLExecutorcan now safely be placed beforeoWebAppinWebApp.src.cWebListnow has a propertypbUseHeaderMenuOnWholeListto apply the default context menu to the entire list.pbUseHeaderMenuOnWholeListis implicitlyTrueifpbShowHeaderisFalse.- Studio Properties Panel now shows prompt button for Bitmap and Icon properties of
dbView. - Renamed
cLocalBaseControlHosttocBaseLocalWebControlHost.
Compiler
SearchArraywith a custom compare function could breakIfstatements — fixed.- Fixed 'Invalid message MSG_OUTPUTCOMPILEMESSAGE' studio error when compiling.
- Added new compiler error for structs without members.
- Fixed compiler issue when a character in a multiline string is a double quote (
"). - Added support to allow
Include_Textto use files in Libraries. - Fixed compiler error on
&when used withWindowIndex. DfComp.execrashed on second compile — fixed.
Runtime
pbAutoColumnSizingofcCJGridis now also applied to the Studio's grid designer.- Fixed errors containing invalid Unicode showing blank in the studio.
- Fixed
readlncrashes on empty clipboard. - Improved the internet connection test to avoid long timeouts.
- Added a
ChildByIndexfunction tocObject.
Studio
- Fixed Error 72 when switching validation table objects in the Studio Data Dictionary modeler.
- Corrected the sort icons displayed on the Properties Panel.
- Reorganized class palette web control grouping.
- Changed editor dark mode default colors for numbers in XML from black to white.
- Replaced List controls in the wizards with Codejock grids to improve DPI scaling.
- Previewer in web wizards triggered error on Theme — fixed.
- Fixed a typo on the Configure Workspace dialog.
WebApp Designer
- WebApp Designer now shows an error if the JavaScript Engine is missing.
- Added convert-from-flow-to-grid-layout function.
- Grid layout popup in WebApp Designer didn't respect DPI scaling — fixed.
- Fixed error when closing a view in the Studio while the grid layout column settings dialog is displayed.
- Convert-to-grid-layout Studio feature no longer sets
piColumnIndexto0incorrectly. - Dropping columns from DDO Explorer onto a WebList in grid mode now creates columns.
- Improved logic for highlighting markers when the grid layout dialog is shown.
- WebApp Designer has new insert-row function for the grid layout.
- Improved selection of
cWebForm,cWebEdit, andcWebComboelements. - Improved grid layout stretch behavior for FlexTron.
- Fixed issue where Designer add/remove row buttons went behind the toggle grid icon.
Web Controls
- Added
pbShowBorderto thecWebDrawingclass. cWebDrawingnow supports updates on items inside a group.- Changed
cWebDrawingglobal helper functions to be class members (not global). cWebExpandPanelinsidecWebAccordionContainerhad sizing issues — fixed.- Changing the selected row to a row hidden using grouping now expands the groups to make it visible.
- Keypad
-and+did not work incWebColumn— fixed. - Web drag 'n drop logic leaked JSON objects — fixed.
- GridLayout: Fixed
WebEditpbFillHeightlogic within the Grid Layout. - Grid Layout: Improved behavior with invalid
psRowHeightsvalues. - Fixed redundant session record issue in
ValidateSessionofStandardSessionManager. - Fixed issue with odd & even row coloring in
WebGrid. - Fixed issue with disappearing checkbox in
cWebColumnCheckbox. - Improved type conversion logic of the Web Property system to resolve issues with
WebSetandWebGeton date properties using strings. - Studio now has a new grid layout dialog that does not get clipped.
cWebTabContainerandcWebCardContainernow also inheritpeLayoutsetting.- Fixed dropping of controls on the WebApp Designer.
- Fixed several WebGrid scrolling issues.
- Added support for DDO structures per tab/card in the web.
AddDDOStructureno longer requires unique DD names.- Improved support for static child objects of dynamic objects in
cWebDynamicObjectContainer. - File upload now works for FlexTron applications.
- JavaScript Engine now validates the content-type before parsing JSON.
cWebModalDialognow uses the HTML5<dialog>element, making it truly modal.- Fixed wrong decimal separator issue for
cWebForminsidecWebDynamicObjectContainer. - Added error for WebList when the number of columns in the data is incorrect.
- Fixed
UpdateHtmlTemplateofcWebHtmlList. - Improved Data Dictionary required field option behavior for parent fields with web controls.
- Fixed
piHeightin flow layout forcWebEditand other controls. - Fixed 'Referenced Array Index Out of Bounds' error on WebSet of struct property on dynamic web object.
WebMultiSelectList.ClearListSelectiondid not clear all checkboxes — fixed.WebMultiSelectList.SelectAllandDeSelectAlldidn't work — fixed.
WebApp Server
- Messages in the event log informed of changes but did not include before/after values — fixed.
- SPLF controller didn't remove processes from a stopped application server — fixed.
- DataFlex errors during startup of WebApps were shown again in the event log — fixed.
- Fixed
OnReleaseProcessissues with Classic ASP-based applications by disablingOnReleaseProcessfor ASP. - Support for 0 weight for SPLF nodes added.
- Improved error handling for cancelled HTTP requests where the body can't be read.
- WebApps did not start after changing disabled registry key — fixed.
- Replaced "Visual DataFlex 9" text strings that displayed in some error messages.
Debugger
- Fixed
_wpfunction showing 'property is not a web property' issue.
Database Explorer
- Fixed 'Invalid Message DoRequestChangeDataOrdering' error.
- Now automatically uses single-record view mode for system tables.
- New Open Previous and Next Table buttons for quick navigation between previously opened tables.
- Fixed error when disabling toolbars via Window > Display Options menu.
- Fixed error when selecting Table name display mode from toolbar.
- Better aligned shortcut key text in menus.
- ReadOnly icon in status bar no longer incorrectly reflects current table state.
WebApp Administrator
- Processes got created at slave node instead of controller after adding webapp using wizard — fixed.
- Added a warning when configuring a slave application while slave mode is disabled.
- Changing settings of a webapp no longer enables all webapps that are stopped on the server.
- Server Busy message gets displayed when setting up a WebApp to use a user account — fixed.
- Changed termination timeout to match the default displayed in the Web Application Administrator.
- Running a web application under a different user account triggered an error — fixed.
Examples
- Added handled error to WebOrderMobile if customer purchase limit is exceeded.
- DataFlex Reports report view in FlexTron example may have generated an error when trying to reopen the view — fixed.
- Added DataFlex Reports HTML formatted text example to sample reports.
- Modified DR report in FlexTron to use
pbChildScopesandpsCSSClassto improve calls to context menu. - Improved Web Control package dependency issues for FlexTron.
- Fixed ‘Customer purchase limit exceeded’ error.
- Anchors were not properly set in the Order Calendar sample — fixed.
Signing Executables
- Changed
SignDataFlexProject.exeto read the name of the tool from INI file.
Installer
- Fixed installer issue with Codejock components on 32-bit Windows.
Registration Program
- Improved activation display in Registration program.
CSS Themes
WebIcon_Printused incorrect font-icon — fixed.
Documentation Changes
Added documentation for:
- Positional Parameter doc in
cSQLExecutorclass documentation. OnPreSendRequestandRequestHandleincHttpTransferclass.CustomDownloadURL: note that even whenbBindSession = False, it still checkspbAllowNonSessionDownloadswhen attempting to download a file.- New
cWebResourceManagerandcLocalWebResourceManagerclass members (in progress). tWebPoint,tWebSize,tWebDrawingEventData,tWebDrawingResizeDatastructs.tWebGroupConfig,tWebGroupHeaderstructs.- Samples added to
OnSQLErrorevent. cFlexTronPanelclass (main class page).DataDictionary: ApplySQLFilterString(this method was private and is now public).cObject.ChildByIndex.cLocalWebResourceManager: RegisterUploadFolder.cWebBaseDEO.pbLimitDateRange.cWebDynamicObjectContainer:Activate,IsRendered,ResetContainer.cWebMenuList: LevelUp.cWebView2Browser: WebMessageAdditionalFileObjectPaths.- FlexTronClass Studio meta data tag.
DF_DATE_4_STATE_ONLY_ON_PARSEdocumentation.- List of types from
variant.pkgthat may be returned when usingDerefW.
Other documentation fixes and updates:
- Corrected
cLocalWebResourceManagerdocumentation. - Fixed named parameter prefix in
cSQLExecutorsamples. - Added missing documentation for
OnPreSendRequest. - Updated Registration program documentation with latest changes and a screenshot.
- Added more information and samples to
OnSQLError. - Clarified
USE_DUMMY_ZERO_DATEbehavior and backend data type dependencies. - Corrected documentation on the
centerfunction. - Fixed
cWebImagesample pointing to a non-existent image file. - Clarified how Special Build and Private Build information can be used on the Project Properties - Version page.
- Fixed Euro symbol sample in
Field_Mask. - Added note that
Include_Textexpects UTF-8. - Improved description of
cWebDrawing.peResizeMode. - Updated Installation & Environment Guide.
- Fixed
WebRegisterPathoptions listing (nfNavigate.. -> ntNavigate..). - Fixed incorrect screenshot on ‘How to set up and test using MySQL’ page.
- Added
iGroupHeaderIndextotWebRow.