Skip to content

What's New in DataFlex 2022

DataFlex 2022 - 20.1 (Released July 2022 - Build 21.1.34.78)

Unicode and 64-Bit

DataFlex 2022, like its predecessor DataFlex 2021, is 64-bit capable and fully Unicode. If you are new to this era of DataFlex, we recommend that you review the information in these sections:

...and then follow the step-by-step recommendations in Working with DataFlex 2021 before jumping into the new features of DataFlex 2022.

Language Improvements

  • Improved SortArray and BinarySearchArray to support Binary and Linguistic comparisons and optimize the sort algorithm for string arrays.
  • The new binary comparison is used in the dynamic web object container class and also in the Studio (where applicable).
  • No more Argument_Size!
  • The internal buffers that store string variables and text columns are now maintained dynamically, allowing them to be any size (within memory limits). If you use Set_Argument_Size in your applications those commands are ignored and if you use Get_Argument_Size it returns the current size of the dynamically allocated buffer.
  • Note that there is no need to remove these commands from your application (this was done for backwards compatibility). Compiler warnings are generated so that you can easily determine if you want to remove them.

  • The new multi-line string does not do compiler substitutions (e.g. !a) so developers can use the new @ syntax to allow unfettered use of ! in strings.
  • Date and DateTime improvements:
  • Fixed: DateTime to Variant conversion millisecond rounding.
  • Fixed: DateTime to Variant conversion loses milliseconds.
  • Fixed: DateAddDay leap year bug.
  • Fixed: -0001-01-01T00:00:00 converts to 2001-01-01T00:00:00 — variant now shows a range check error since a variant VT_DATE can’t go below 0100-01-01T00:00:00.
  • Various improvements and fixes:
  • Fixed: Expressions using StringifyUtf8 gave "Illegal datatype conversion" errors.
  • Fixed: Added missing use statements to various packages.
  • Fixed: Corrected the spelling of pbNoAccessibilityCheck (note: this could cause compiler errors if you have set pbNoAssessabilityCheck in your application code).
  • Fixed: cClientWebService does not handle generated code with C_Nillable.
  • Improved: cHttpTransfer implements new RequestHandle property and implemented ResponseStatusText.
  • Fixed: If a struct member matches the type name the casing of the type name was used.
  • Fixed: JSONtoDataType crashes on null to Variant.
  • Improved: Updated syntax for DFError.pkg.
  • Fixed: When using Append (or Append function), the result is not the same in 20.0 as it was in previous revisions (e.g. 19.0).
  • Fixed: Multi-line string support broke the use of ; to split strings.
  • Fixed: Register_Function with different parameters caused the expression evaluator to crash.
  • Fixed: JSON Parser did not handle empty strings properly.
  • Fixed: Direct_Output "WINLST:" triggers an error.
  • Fixed: Text from error dialog was not always correct when copied to the clipboard (using Copy button).
  • Fixed: Direct_Output / Direct_Input "clipboard:" doesn't handle Unicode properly.
  • Fixed: AddressOf on Global BigInt is one byte off.
  • Improved: Use Define instead of #Replace in packages.

Web Application Framework

  • New cWebContextMenu class provides custom menus when right-clicking on various controls. See the Custom Menus example view under Demo in the WebOrder workspace.

  • New cWebMenuItemCheckbox can be used to create multi-item menus. See the example in the Themes menu in the WebOrder workspace.

  • New cWebAppLogReader class can read application logs from any registered web application or directly from any log file. See the example in the Specialized Components workspace.

  • Extended cWebList and cWebGrid with the ability to:
  • Reorder and hide / show columns.
  • Store layout:
    • Automatically in local storage.
    • Manually using structs.
  • New footer row capabilities.
  • The user can reorder columns by dragging them from one position to another. Hiding columns is done through a new context menu that can also be used to show them again.

  • cWebGrid supports un-editable columns.
  • New cWebDragDropHelper class provides Drag & Drop support between and within various web controls, including WebList rows, WebTreeView items and WebTagsForm tags. Drop support is available for almost all web controls. The centralized handling allows developers to easily define the drag sources and drop targets and the appropriate OnDrop actions.
  • There are two new demo views in the WebOrder workspace:
    • Between Controls Demo

- Within Controls Demo

  • cWebApp has new properties for browser language and time zone offset.
  • Various improvements and fixes:
  • Fixed: HTTP ResponseHeader returns nothing.
  • Improved: Add psToolTip to the label object created for a cWebCheckbox.
  • Fixed: piMinWidth does not appear to work on WebView and WebPanel.
  • Improved: cWebTabContainer and cWebAccordianContainer sizing with pbRender and pbVisible.
  • Fixed: cWebCheckBox caption is hidden behind other controls when there is not enough space.
  • Improved: New InsertTagBefore and InsertTagAfter capabilities in cWebTagsForm.
  • Fixed: cWebMenuButton rendering issue.
  • Fixed: cWebMenuList sizing issue.
  • Fixed: Setting pbRender of multiple accordion cards caused access control errors.
  • Fixed: CWebTagsForm cSelectionSource; when collecting numbers could result in an infinite loop.
  • Improved: Current row positioning in lists and grids.
  • Improved: cWebTagsForm supports custom separators.
  • Fixed: UrlParameter of cWebHttpHandler crashes on empty parameter.
  • Fixed: cClientWebService DoInvokeService does not properly place data into spReturnParameters.
  • Fixed: WebList scrollbar does not appear inside WebListExpandPanel.
  • Fixed: w3wp crashes inside Xalan.
  • Fixed: Small dot visible when WebColumnCheckBox is disabled (Material theme).
  • Fixed: Compiler error in cInternetSessionBusinessProcess.pkg (Classic ASP).
  • Fixed: cWebBusinessProcess compiler error.
  • Fixed: AddDDOStructure can obfuscate SyncDDO errors.
  • Fixed: cWebTagsForm list doesn't reset after not finding an entry and backspacing.
  • Fixed: cWebTagsForm doesn't respect pbReadOnly.
  • Fixed: cWebTagsForm with psPlaceHolder set and pbReadOnly True appends typed values to placeholder.

Connectivity

  • Improved table restructure by preserving more natively implemented attributes, including triggers, comments, full text indexes and warning against restructuring system-versioned tables. Alpha 1 contains our progress to date, but this feature is still under further development. The matrix below shows our intent and current status:
Feature MSSQL DB2 MySQL Oracle PostgreSQL
Triggers Implemented Implemented Implemented Implemented Implemented
Table / Column Comments Implemented Implemented Implemented Implemented Implemented (includes all extended properties)
Full Text Indexes Implemented Implemented Implemented Implemented Future Consideration
System Versioned Table Info Implemented Future Consideration Future Consideration Future Consideration Limited (only prevents restructure)
  • Reduced memory consumption in SQL drivers:
  • Find cache buffers are now dynamically allocated.
  • Various improvements and fixes:
  • Improved: PostgreSQL ciText types will map to DF_ASCII if length <= 255 (otherwise map to DF_TEXT).
  • Improved: cConnection has new psConnectionAppName property that is passed in the connection string.
  • Fixed: Error calling PostgreSQL stored function with no parameters.
  • Fixed: MariaDB error on restructure mediumtext column.
  • Fixed: Attempting to restructure a system table crashed.
  • Added DF_FILE_REVISION to the _DriverDef.XML files.
  • Fixed: Finds on citext columns in PostgreSQL not working.
  • Added a driver attribute (DF_DATABASE_IDENTIFIER_QUOTE) returning the quoted identifier character.

Web Application Server

  • Improved process creation when max pool size has not been reached:
  • If a request triggers the start of a new process, the request will no longer wait for that specific process but use the first one available.
  • Improved process deletion when processes in excess of min pool size are no longer needed:
  • When the process pool scales down it will do so gradually instead of stopping all processes at once.
  • The process pool reports statistics to the WebApp Administrator.
  • WebApp Administrator:
  • Shows more information about current activity.

  • Remembers its size and location.
  • Shows PIDs for processes.
  • New option to update all configuration files when the Web Application name does not match what they contain.

  • New option to terminate process.

  • DFManageVDir:
  • Improved ability to handle multiple levels when one of the parent levels did not exist.
  • Fixed: didn't release handler.
  • Various improvements and fixes:
  • Fixed: Starting SPLF processes triggers a server panic on the application servers.

Windows Framework

  • New cWebView2Browser class. This component wraps the Edge WebView2 browser engine from Microsoft into a reusable DataFlex control. WebView2 is based on Edge Chromium and has similar specifications. Use this control to display web pages or HTML snippets within your DataFlex Windows project. APIs are available for two-way communication between the web page and the host application. This new control can replace the Internet Explorer–based ComWebBrowser usage. There is a comprehensive example (WebView2Browser.src) in the Specialized Components workspace.

  • New cTagsForm class brings the same tagging capabilities to Windows applications as cWebTagsForm (including custom separators), which was added to the Web Framework in DataFlex 2021. There are demo views for both in the Order Entry (DemoWindowsTags.vw) and WebOrder (DemoWebTags.wo) workspaces.
  • Order Entry:

  • Web Order:

  • Various improvements and fixes:
  • Fixed: SuggestionList did not appear in the proper location.
  • Updated to CodeJock 20.0 (from 18.3).
  • Removed wizard.pkg from package library.

Studio

  • The Studio now uses the console compiler (introduced in DataFlex 20.0).
  • Added compile time to the output.
  • Improved logic for precompiling system packages.
  • No longer clears the output window between 32 and 64-bit precompiles.
  • This eliminates the impact of the size of the Output Panel on compilation speed.
  • We have retired the old DFC.exe compiler component that was used previously.
  • Code Explorer:
  • You can now move any node type in Code Explorer up or down instead of just objects.

  • Replaced the IE-based browser (used in the Start Center, Workspace Dashboard and Web Designer) with a new browser based on Microsoft's Edge WebView2 control.
  • Supports multi-line strings in the editor.
  • Various improvements and fixes:
  • Fixed: Code Editor dark theme preferences not migrated from 20.0.
  • Fixed: Table Editor columns are too wide when editing SQL tables.
  • Fixed: Copy from code explorer treeview not Unicode ready.
  • Fixed: Test in Configure Studio dialog is cut off on high-DPI systems.
  • Fixed: Ctrl+C and Ctrl+X do not work in Table Viewer.
  • Improved: New (workspace root folder) command line replacement tag in Configure Tools.
  • Fixed: Dragging .sws files onto the Studio opened the file instead of the workspace.
  • Fixed: Resizing the Add Connection dialog should properly resize controls.
  • Fixed: Studio generates Unhandled Error when _Studio.dsk file is ReadOnly.
  • Improved: Logic for determining which icons are used in the Class Palette.
  • Improved: Selected item markers when using the Dark theme.
  • Fixed: Context Menu sometimes clips menu text.
  • Fixed: Debugger tooltip was corrupt when the RowID was too long.
  • Improved: DDO Explorer shows the object name instead of the class name.
  • Fixed: Can't change platform setting in Project Properties for Web applications.
  • Improved: Dark theme colors for non-DataFlex files, including SQL.
  • Fixed: Invalid message error on DD for Alias table.
  • Improved: New Class wizard no longer filters abstract classes.
  • Fixed: Dark theme writes dark icons to classlist.
  • Improved: Control size and position on Add Connection dialog.
  • Fixed: Error when closing Table Editor when a partial edit to an index is made (SQL drivers only).

DataBase Explorer

  • Added toolbar options to display various configurations of icons and/or captions.

  • Fixed: Table not Open error when rebuilding dataview under certain conditions.

Examples

  • New Dynamic Web Objects Shop demo in the WebOrder workspace.

  • New cWebAppLogReader example in Specialized Components (shows reading from registered applications and from log files).
  • New cWebList and cWebGrid capabilities are available in all related views in the Web Order workspace (no code changes).
  • Added new cWebDragDropHelper demo to the Web Order workspace.
  • Added new cTagsForm demo to the Order Entry workspace.
  • Added new cWebViewBrowser demo to the Specialized Components workspace.
  • Fixed: WebTagsForm Demo: Button to using psValue may add blank value before first value.
  • Fixed: DemoFileUpload in WebOrder uses Unicode APIs defined in cWorkspace.

Documentation

Class Reference

Installers

  • The DataFlex Studio, WebApp Server and Client Engine installers all attempt to install the Microsoft WebView2 Runtime, which requires internet access. If your deployment site does not have internet access, or you want to manage the installation of the WebView2 Runtime outside of the DataFlex installers, you can bypass this step with the NO_WEBVIEW2 command line option. Please note that the DataFlex Studio requires the WebView2 Runtime to support the Start Center, Workspace Dashboard and Web Designer functionality.
  • Switched to release profile with standard evaluation licenses.
  • Updated to the latest version of Advanced Installer.
  • Fixed: Silent command-line option (/exenoui /qn) was not setting DFPath correctly.

Miscellaneous

  • Adjusted copyright notices product-wide to new standard (Copyright 2005-2021 Data Access Corporation. All rights reserved.).
  • All the fixes and improvements that have been made to DataFlex 2021 during the update process are also in DataFlex 2022.

See Also