Can't find what you are looking for? Try these pages!

What's New in DataFlex

What's New in
DataFlex
Download DataFlex 2023

DataFlex 2023/23.0

New Features

Take Windows applications to the next level

DataFlex 2023 introduces FlexTron, which brings Web views and controls into Windows applications, allowing a more modern look and feel or just adding Web features to more mature Windows applications.

You can use a single Web control or build entire applications. A FlexTron sample workspace is added to see FlexTron in action and easily try it out.

> Watch the DataFlex Learning Center lesson about FlexTron in DataFlex 2023

Bring DataFlex SQL-backends closer to you

DataFlex 2023 comes with a new way to work directly with SQL statements. A new engine for executing statements is built into the runtime that puts result sets directly into native DataFlex types. This means that your results can now go directly into structs, multidimensional arrays and variants with the proper type conversions being done automatically.

Parameterized queries now support named parameters and only a single class / object is needed for executing queries. Studio support for working with SQL statements is improved by adding syntax highlighting, code sense and a query test tool for SQL statements.

Watch the DataFlex Learning Center lesson about Embedded SQL in DataFlex 2023

A new way to build Web interfaces

The new Web Grid Layout system in DataFlex 2023 gives you more control over the vertical positioning of controls. Using modern browser technologies like CSS Grid makes building complex interfaces easier than ever.

> Watch the DataFlex Learning Center lesson about the Web Grid Layout in DataFlex 2023

Easily organize your data

The WebList now supports grouping of data. For example group on state, status or city, which gives a clear overview of your data! You, as a developer, can use manual grouping and the end user can configure the groups via the context menu on the header of the list.

> Watch the DataFlex Learning Center lesson about WebList Grouping in DataFlex 2023

Language Improvements

Cleaner source code

When embedding foreign code like SQL, JavaScript or HTML into DataFlex code, you can use a multiline string. A new style of multiline string has been added that allows better alignment with the rest of your code without adding white space to the actual string at runtime. These strings use the triple quote notation (""") and have the advantage that you can embed quotes in your source code.

> Watch the DataFlex Learning Center lesson about Aligned Multiline Strings in DataFlex 2023.

Even more cleaner source code

Multiline comments are added to the DataFlex language! Use /* to start the multiline comment and end it with */

Studio

All Properties at a glance

Web properties are now identified in the Properties Panel with a Unicode Earth character.

Due to this, Web Properties are no longer listed in a separate Web Properties category, but in meaningful categories like Appearance and Behavior, along with standard (non-Web) properties.

Find the properties you need

The Studio’s Properties Panel now allows for filtering of properties. You can choose whether to show All Properties, Standard Properties or Web Properties. In addition, you can choose to see only Changed Properties along with the property type filter above.

Other new features in the Studio

  • The Studio can now change from Light to Dark Theme when Windows does, rather than having to manually toggle the Studio theme.
  • A new option has been added to Project Properties that allow JavaScript Engine to be automatically checked and updated.
  • You can now import preferences from a prior Studio version on demand from the Tools menu.
  • The icons now contain larger sizes for high DPI screens. This especially shows when running the studio at 200% or higher. 

Web Framework

Select multiple rows

It’s now possible to select multiple rows in a list! This makes it easier than ever to delete multiple rows or drag and drop several rows from one list to another.

Customize the header context menu

The context menu is fully customizable in DataFlex 2023. Add the options you need to the header context menu, so they are only one click away. For example, exporting your list as an Excel document.

WebApp Server

See what caused your app to crash

Not knowing what caused your app to crash is no longer a worry. DataFlex 2023 displays a detailed crash report with a call stack trace explaining exactly what happened before the crash.

Quick Links

Want more details? Take a look

DataFlex 2022/20.1

Studio

Faster compile times

The Studio now uses the console compiler (introduced in DataFlex 20.0). Things to note...

  • Compile time is now shown as part of the output
  • Logic for precompiling system packages is improved
  • The output window is no longer cleared between 32 and 64-bit precompiles, which eliminates the impact of the size of the Output Panel on compilation speed
  • The previous DFC.exe compiler component has been retired

Watch the short video about Harm Wibier (Lead Software Developer) his Top 3 Productivity Enhancements in DataFlex 2022

Code Explorer - improved functionality

You can now move any node type (ex: functions, procedures, properties, etc.) in Code Explorer up or down instead of just objects.

Windows Framework

HTML snippets within Windows projects

Use the cWebView2Browser control to display web pages or HTML snippets within your DataFlex Windows project! The new cWebView2Browser class wraps the Edge WebView2 browser engine from Microsoft into a reusable DataFlex control. WebView2 is based on Edge Chromium and has similar specifications.  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. A comprehensive example (WebView2Browser.src) is available in the Specialized Components workspace.

Tags for Windows

The new cTagsForm class brings the same tagging capabilities to Windows applications as cWebTagsForm (including custom separators) did for web applications. This class allows multiple items to be created or selected from a source, such as a table, and then shown visually as boxes/balloons called tags. Demo views for both classes are available in the Order Entry (DemoWindowsTags.vw) and WebOrder (DemoWebTags.wo) workspaces.

New placeholders

Windows DEOs can now have placeholders! psPlaceHolder displays text in empty forms, and pbShowPlaceHolderOnFocus determines whether a placeholder value will be shown when the control takes the focus.

Web Framework

Drag & Drop Support

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.

Watch the short video about Drag & Drop.

cWebList and cWebGrid

cWebList and cWebGrid have been extended with...

  • With the ability to reorder and hide / show columns
    • Layouts can be automatically stored in local storage or manually stored using structs
    • Reordering is done by dragging columns from one position to another. Hiding/showing columns is done through a (new) context menu.
  • New footer row capabilities 

Watch the short video about the extended WebList and WebGrid.

Custom menus

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

Multi-item menus

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

WebApp Server

Improved process creation and deletion

  • Process creation is improved 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 process available
  • Process deletion is improved 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

WebApp Administrator now...

  • Shows more information about current activity
  • Remembers its size and location
  • Show PIDs for processes
  • Has new option to update all configuration files when the Web Application name does not match what they contain
  • Has new option to terminate process

Language Improvements

New Dynamic Argument Size

The internal buffers that store string variables and text columns are now maintained dynamically allowing 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.

Multi-line Strings

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.

Connectivity

Improved Table Restructure

Table restructure has been improved by preserving more natively implemented attributes, including triggers, comments, full text indexes and also warn against restructuring system-versioned tables.

Reduced memory consumption

Find cache buffers are now dynamically allocated.

Examples

New 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

Quick Links

Want more details? Take a look

DataFlex 2021/20.0

Unicode and 64-Bit

Unicode and 64-Bit

DataFlex 2021 is 64-bit capable and fully Unicode, unlocking the power of 64-bit environments and supporting multiple languages in a single application. We recommend that you review the information in these sections:

Note that Unicode support is available for all types of DataFlex Web Applications, including ASP Classic.

Web Framework

Dynamic Web Objects

Dynamic Web Objects are created at runtime, not hard-coded in the application. Their definitions may come from the database, or prior user interactions, and their use are centered around UI objects (controls). Dynamic objects are useful for user-configurable dashboards, questionnaires, or anywhere you can’t predetermine the exact object structure. The Web Order example has a dynamic objects demo.

cWebTagsForm

This new control looks like a standard web form, but it allows the selection of multiple items. These items are visually represented by boxes/balloons called tags. Selection is done by typing text into the form and, optionally, a list of items to select from is displayed.

cWebGeoLocation

The cWebGeoLocation class queries the current location (using GPS coordinates) by wrapping the HTML5 navigator.geolocaton API and supports both single query and tracking.

Security

A new layer of security checks is added that validates if UI objects are actually displayed (pbRender, pbVisible) and enabled (pbEnabled) before performing operations on them. This prevents unwanted exposure of data and prevents unallowed operations from being performed. A new web property type called ClientProtected is added to support this.

More

Connectivity

The new connectivity capabilities are at the heart of providing robust Unicode support in your applications. DataFlex 2021 contains re-engineered SQL drivers for Microsoft SQL Server, IBM DB2, MySQL and other back-ends supported through ODBC.

DataFlex 2021 also includes a 64-bit version of the PSQL (Btrieve) driver. This driver does not add any Unicode support and runs through the same compatibility layer as the Embedded Database driver. We continue to investigate the feasibility of adding Unicode support to the PSQL driver.

When working with various SQL back-ends, its important to understand how each one deals with Unicode. The Working with DataFlex 2021 section covers Microsoft SQL Server in detail, but we’ve created a series of guides for other SQL environments.

WebApp Server

DataFlex 2021 includes improvements to how web applications are managed that are not specific to the Unicode and 64-bit capabilities that are the main thrust of the new release.

Studio Dark Theme

We’ve added a Dark Theme to the DataFlex Studio! You can try the new theme by selecting the Dark Theme option from the Configure Studio... option on the Tools menu.

Note that the Studio allows you to hot-switch between the Dark Them and the standard theme, but we recommend you restart the Studio after changing between themes.

Quick Links

DataFlex 2019/19.1

Web

HTTP Request Handler

The HTTP request handler provides a way to handle complete HTTP requests all in DataFlex code. It connects to IIS as a module and takes care of the request handling completely. This component provides the low-level interface for building REST services and any other HTTP service needed. It can handle both binary and text data in chunks or as a whole. The HTTP request handler is also used for handling WebApp Framework file uploads and downloads as well.

Meaningful URL's and History Management

This is the long way of saying that the back button works! The Web Framework also supports "deep linking". You can see how this new capability works running the WebOrder and WebOrderMobile sample applications and read about the complete Meaningful URL and History Management interface.

Expandable Lists

Web lists now support nested, expandable sections through the cWebListExpandPanel class. You can see the new capability in the WebOrderMobile example by selecting Customer Query and then clicking on any customer.

Horizontal Scrolling

Grids now support horizontal scrolling through the use of the pbAutoColumnSizing property.

Material Design Theme

We know you’ll be impressed with the new, Google-inspired, Material Design Theme. Material Design improves usability by utilizing depth through shadows, allowing you to accentuate certain elements. The WebOrderMobile sample uses this new theme.

Basic Web Applications

A new DataFlex Web Framework style, “Basic”, had been added to the existing Mobile/Touch and Desktop styles. A Basic web application does not use the DataFlex user interface objects; it only uses Web Application Server components used for service-based applications. This new style makes both the development and deployment of service-based web applications more efficient through a streamlined class hierarchy and the elimination of the JavaScript Engine and all other web components associated with the DataFlex user interface.

Connectivity

The DataFlex ODBC driver has been enhanced to better support MySQL and MariaDB and now includes the following capabilities:

  • Basic DataFlex data manipulation (Find/Save/Delete)
  • Creating/maintaining tables in DataFlex Studio.(Restructure)
  • Conversion from DataFlex embedded to MySQL/MariaDB
  • Support for managed connections
  • Support for recnum tables and standard tables
  • Support for primary keys
  • Support for auto_increment (identity) columns
  • Embedded SQL

We’ve expanded the support for the latest versions of Microsoft SQL Server and its associated clients. Unless you design your application to use a specific Microsoft client, the highest version available on a given workstation will be used.

As you take your use of SQL to the next level through the use of Embedded SQL you can now take advantage of even better performance and increased security with parameterized queries.

In addition to the benefits of parameterized queries, DataFlex SQL drivers now support various cursor types for embedded SQL statements: Forward Only, Dynamic, Static and Keyset Driven. While Forward Only cursors (the default used by DataFlex for many years) retrieve data fastest and with the least overhead, specifying different cursor types can render results more tailored to application needs and not have the same limitations. For instance, Microsoft SQL Server’s Forward Only cursors require variable length columns to be last in the SELECT statement. For queries that must include variable length columns intermixed with others, you can specify Static or Dynamic cursors instead. Note that Static cursors are generally faster than Dynamic but will not detect changes by other users.

Windows

Enhanced DPI Awareness

Your Windows application will display crisply and more accurately scaled, regardless of the DPI resolution being used. We've improved the scaling metrics used in the conversion of dialog units to pixels so that visual components will always look proportional to each other, regardless of the resolution used during the design of the component. We've also updated image lists to support proper scaling of icons and improved the DPI awareness of buttons and treeeviews.

Improved and Configurable Form Heights

You now have the ability to control the form height in your Windows applications at the workspace level. The default height for new workspaces will be slightly smaller (a form height of 12) to be more consistent with other Windows applications, but you can actually set the form height to any value. Migrated projects will continue to have the form heights set to 13 (the old standard) until and unless you decide to change them. Combo forms will also scale with the new form heights.

More

Installer

DataFlex 19.1 uses new installation technology that provides a crisp, modern look across all monitor resolutions, is 64-bit capable (in preparation for the next generation of DataFlex) and automatically configures the proper provisioning of IIS for DataFlex web applications (including automated installation of the required IIS components if necessary). The new installer is created with Advanced Installer and uses industry standard msi technology. Be sure to read about the new capabilities to control the Server and Client installations from the command line.

Embedded Manifest Files

Another early benefit born in the NextGen project is simplified deployment though the use of embedded manifest files. In order to support the different Portable Executable (PE) images needed to support a common development environment for both 32 and 64-bit applications, we created a new linker and that also allowed us to more easily support embedded manifest files. You control this new feature though an additional project property in the Studio. When using embedded manifest files in a project, the mainifest file is moved from Programs to AppSrc and then automatically linked into the resulting executable. If you do not set the project property, the manifest file will automatically be copied to the Programs folder during development.

Code cleanup

DataFlex 19.1 provides a way for you to modernize your existing code. This is an optional process and is mostly handled through a new compiler warning system. Your existing applications will continue to run the same. There are some cases where your existing application may generate compiler errors. These are easily addressed.

DataFlex Reports Examples

The various example workspaces, both Windows and Web, now include an improved and expanded set of live reports (in prior revisions they used PDF files simulated output). The live DR reports use a common, custom, DataFlex Reports runtime (made specifically for our examples - developers must use the actual DataFlex Reports runtime for their own deployment) so that we do not need to have a copy of the runtime in each workspace or have it referenced in the manifest files.

Quick Links

DataFlex 19.0

Web

Server Web Properties

The DataFlex framework now includes a new property type called “server web properties”. In contrast to client web properties, server web properties are always stored only on the server; they are never sent to the web client. Server web properties provide persistency and can even be attached to sessions. The new property type provides a secure place to store an application’s state with the same ease of use as DataFlex’s existing client web properties. In addition to security, since server web properties do not consume any bandwidth, they can result in improved application performance compared to the use of client-side web properties.

Swipeable Buttons (in Lists) and Cards

Touch functionality in applications has been extended with a new control called the “swipeable list button”. This control provides a compact, effective method to add extra actions to list rows. The button functionality is highly customizable and easy to implement. Also, the card container now has a new swipe feature that enables users to swipe between cards. Swipeable cards provide a touch-friendly alternative to existing tab containers.

Floating Panel

The cWebFloatingPanel is a versatile container component that can be positioned it several ways. It falls outside the control and regular panel layout flow and "floats" on top of the application. It can be used to develop custom menu systems, provide extra details or show notifications.

Collapsible group

The cWebGroup control has been extended with the option to collapse / expand groups. Controlled by properties and a button on the screen, collapsible groups provide a new resource to use limited, small-device screen real estate more efficiently.

Improved Connectivity

DataFlex’s connectivity to SQL databases for mobile, web and Windows apps has been dramatically improved with new ways to maintain database connections and several other database-related improvements.

  • Database connection IDs are now fully integrated into the Studio and applications
  • Indexing support for SQL databases has been enhanced
  • The workflow for developing SQL-based applications has been improved
  • The Studio includes more natural support for typical SQL features such as primary keys, foreign keys, identity columns, clustered indexes, etc.)
  • The database login process has been enhanced including support for encrypted credentials
  • Easier, faster and more robust database conversion, connection and reconnection processes

64-bit WebApp Server Support

The benefits of DataFlex 2017’s 64-bit WebApp Server support are: simplified server installation and configuration and elimination of the requirement to switch default 64-bit Internet Information Servers (IIS) to 32-bit mode. These benefits are accomplished by providing both 32-bit and 64-bit binaries of parts of the WebApp Server. DataFlex web application processes and the WebAppServer.exe that controls them are still 32-bit.

Accordion Container

The cWebAccordionContainer is an accordion-style web control based on the tab / card container technology. cWebAccordionCards expand or collapse by clicking on the header or they can be controlled from the source code properties. The accordion container can be configured to allow a single expanded item or multiple expanded items.

Highlight Column

The cWebColumnHighlight is a specialized visual component that can be used to highlight hits in search results. It has several configuration options to specify exactly how it should highlight keywords. This component is ideal for enhancing the usability of web applications with search capabilities.

Color Picker

New “color picker” controls are available in popup format (cWebColorForm) and as standalone control (cWebColorPicker). They both work with HEX and RGB color strings and have the ability to display a custom color palette with predefined colors.

Communicate with RESTful services

The new cHttpJsonTransfer class now makes it easy for DataFlex web apps to communicate with the vast array of RESTful JSON services on the web. The new class supports all of the protocol’s necessary HTTP verbs and is closely integrated with the new DataFlex 2017 JSON Parser. Data is passed in and retrieved using cJsonObject handles which simplifies further processing.

JSON Parser

The JSON parser is a single cJsonObject class that contains the entire API for parsing, generating, analyzing and manipulating JSON. The API is a simplified DOM where each object represents a single JSON node. JSON can be generated by creating and configuring these objects or by simply converting a struct or array from memory before calling Stringify to generate the JSON string. DataFlex’s cHttpJsonTransfer class makes it easy to work with modern REST APIs by working closely with the cJsonObject.

Windows

Tabbed workspace

The tabbed workspace style is an alternative to Windows’ regular MDI style. When used, tabbed views are not rendered in floating panels but are stretched in the available application space. With tabbed workspaces, switching between views is done by selecting tabs that appear as part of the application’s command bar. To support this application style, several components have been improved and sizing and centering logic has been added. Views can be placed next to each other by simply dragging a view’s tab to split the client area horizontally or vertically.

Improved Connectivity

DataFlex’s connectivity to SQL databases for mobile, web and Windows apps has been dramatically improved with new ways to maintain database connections and several other database-related improvements.

  • Database connection IDs are now fully integrated into the Studio and applications
  • Indexing support for SQL databases has been enhanced
  • The workflow for developing SQL-based applications has been improved
  • The Studio includes more natural support for typical SQL features such as primary keys, foreign keys, identity columns, clustered indexes, etc.
  • The database login process has been enhanced including support for encrypted credentials
  • Easier, faster and more robust database conversion, connection and reconnection processes

DPI Scaling

DataFlex now provides better support for DPI scaling of icons used in Codejock Toolbars, Menus and Context Menus. This enhancement for Windows developers and Windows applications is provided by a combination of changes in the latest Codejock COM controls and changes to the DataFlex 2017 class library.

More

Dashboard

The dashboard has been revamped with a clean new look and improved performance. It provides a clear overview of the applications you are working on.

JSON Parser

The JSON parser is a single cJsonObject class that contains the entire API for parsing, generating, analyzing and manipulating JSON. The API is a simplified DOM where each object represents a single JSON node. JSON can be generated by creating and configuring these objects or by simply converting a struct or array from memory before calling Stringify to generate the JSON string. DataFlex’s cHttpJsonTransfer class makes it easy to work with modern REST APIs by working closely with the cJsonObject.

Communicate with RESTful services

The new cHttpJsonTransfer class now makes it easy for DataFlex web apps to communicate with the vast array of RESTful JSON services on the web. The new class supports all of the protocol’s necessary HTTP verbs and is closely integrated with the new DataFlex 2017 JSON Parser. Data is passed in and retrieved using cJsonObject handles which simplifies further processing.