DataFlex 2022 - 20.1 (Released July 2022 - Build 21.1.34.78)
Unicode and 64-Bit
DataFlex 2022, like it's predecessor DataFlex
2021, is 64-bit capable and fully Unicode. If you are new to this
new 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, and this allows them to be of
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 (eg.
!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 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 will be able to do this by dragging columns 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 Web Order workspace..
- Between 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 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 also
warn 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...
|
MSSQL |
DB2 |
MySQL |
Oracle |
PostgreSQL |
Triggers |
Implemented |
Implemented |
Implemented |
Implemented |
Implemented |
Table / Column Comments |
Implemented (includes all extended
properties) |
Implemented |
Implemented |
Implemented |
Implemented |
Full Text Indexes |
Implemented |
Future Consideration |
Future Consideration |
Future Consideration |
Future Consideration |
System Versioned Table Info |
Limited (only prevents restructure) |
Future Consideration |
N/A |
N/A |
N/A |
- 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 <driver>_DriverDef.XML
files
- Fixed - Finds on citext columns in PostgreSQL not working
- Add 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

- Remembers its size and location
- Show 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.


- New placeholders for Windows DEOs are controlled with the following
properties...

- 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 <home> (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 the 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 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
- Adjust 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
DataFlex 2022 Update
Release Notes
What's New