Skip to content

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 both DebugBuffer.js and DebugBuffer.css files 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_PARSE is set to True, it will only apply the epoch logic when converting from a string to a date and the year only has two digits (e.g., year 01 will be converted to 2001, but year 0001 is untouched).
  • This behavior stems from the DF_DATE_4_STATE implementation in the runtime, which adds 2000 (or 1900 depending on the DF_EPOCH_VALUE setting — see DF_EPOCH_VALUE) when converting between dates and strings.
  • If set to False, string-to-date conversion will use the DF_DATE_4_STATE/DF_EPOCH_VALUE logic.

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 varchar2 in Oracle tables.

cSQLExecutor

  • piSqlAffectedRows reported as 0 on queries with warnings — fixed.
  • Fixed SQLSetParameter 'Invalid Precision Value' error when called with an empty string.
  • Now sets Err to True when a parameter is not found.
  • Now returns correct column types with SQLColumnInfo.
  • Fixed crash when calling SQL function from OnSQLPreExecute.
  • Extended the tSQLColumnInfo struct 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_State from 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 SQLStrAppend to 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.dg and webdd_debug.wo with table/DD relationship information.
  • piUpdateColumn of cCJGrid is now restored in OnRestoreDefaults.
  • Fixed Unicode issue with OnEndLabelEdit of the TreeView class.
  • cSQLExecutor can now safely be placed before oWebApp in WebApp.src.
  • cWebList now has a property pbUseHeaderMenuOnWholeList to apply the default context menu to the entire list. pbUseHeaderMenuOnWholeList is implicitly True if pbShowHeader is False.
  • Studio Properties Panel now shows prompt button for Bitmap and Icon properties of dbView.
  • Renamed cLocalBaseControlHost to cBaseLocalWebControlHost.

Compiler

  • SearchArray with a custom compare function could break If statements — 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_Text to use files in Libraries.
  • Fixed compiler error on & when used with WindowIndex.
  • DfComp.exe crashed on second compile — fixed.

Runtime

  • pbAutoColumnSizing of cCJGrid is now also applied to the Studio's grid designer.
  • Fixed errors containing invalid Unicode showing blank in the studio.
  • Fixed readln crashes on empty clipboard.
  • Improved the internet connection test to avoid long timeouts.
  • Added a ChildByIndex function to cObject.

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 piColumnIndex to 0 incorrectly.
  • 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, and cWebCombo elements.
  • Improved grid layout stretch behavior for FlexTron.
  • Fixed issue where Designer add/remove row buttons went behind the toggle grid icon.

Web Controls

  • Added pbShowBorder to the cWebDrawing class.
  • cWebDrawing now supports updates on items inside a group.
  • Changed cWebDrawing global helper functions to be class members (not global).
  • cWebExpandPanel inside cWebAccordionContainer had 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 in cWebColumn — fixed.
  • Web drag 'n drop logic leaked JSON objects — fixed.
  • GridLayout: Fixed WebEdit pbFillHeight logic within the Grid Layout.
  • Grid Layout: Improved behavior with invalid psRowHeights values.
  • Fixed redundant session record issue in ValidateSession of StandardSessionManager.
  • 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 WebSet and WebGet on date properties using strings.
  • Studio now has a new grid layout dialog that does not get clipped.
  • cWebTabContainer and cWebCardContainer now also inherit peLayout setting.
  • Fixed dropping of controls on the WebApp Designer.
  • Fixed several WebGrid scrolling issues.
  • Added support for DDO structures per tab/card in the web.
  • AddDDOStructure no 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.
  • cWebModalDialog now uses the HTML5 <dialog> element, making it truly modal.
  • Fixed wrong decimal separator issue for cWebForm inside cWebDynamicObjectContainer.
  • Added error for WebList when the number of columns in the data is incorrect.
  • Fixed UpdateHtmlTemplate of cWebHtmlList.
  • Improved Data Dictionary required field option behavior for parent fields with web controls.
  • Fixed piHeight in flow layout for cWebEdit and other controls.
  • Fixed 'Referenced Array Index Out of Bounds' error on WebSet of struct property on dynamic web object.
  • WebMultiSelectList.ClearListSelection did not clear all checkboxes — fixed.
  • WebMultiSelectList.SelectAll and DeSelectAll didn'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 OnReleaseProcess issues with Classic ASP-based applications by disabling OnReleaseProcess for 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 _wp function 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 pbChildScopes and psCSSClass to 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.exe to 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_Print used incorrect font-icon — fixed.

Documentation Changes

Added documentation for:

  • Positional Parameter doc in cSQLExecutor class documentation.
  • OnPreSendRequest and RequestHandle in cHttpTransfer class.
  • CustomDownloadURL: note that even when bBindSession = False, it still checks pbAllowNonSessionDownloads when attempting to download a file.
  • New cWebResourceManager and cLocalWebResourceManager class members (in progress).
  • tWebPoint, tWebSize, tWebDrawingEventData, tWebDrawingResizeData structs.
  • tWebGroupConfig, tWebGroupHeader structs.
  • Samples added to OnSQLError event.
  • cFlexTronPanel class (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_PARSE documentation.
  • List of types from variant.pkg that may be returned when using DerefW.

Other documentation fixes and updates:

  • Corrected cLocalWebResourceManager documentation.
  • Fixed named parameter prefix in cSQLExecutor samples.
  • 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_DATE behavior and backend data type dependencies.
  • Corrected documentation on the center function.
  • Fixed cWebImage sample 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_Text expects UTF-8.
  • Improved description of cWebDrawing.peResizeMode.
  • Updated Installation & Environment Guide.
  • Fixed WebRegisterPath options listing (nfNavigate.. -> ntNavigate..).
  • Fixed incorrect screenshot on ‘How to set up and test using MySQL’ page.
  • Added iGroupHeaderIndex to tWebRow.

See Also