Skip to main content
All docs
V24.2

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

v24.2 Release Notes

  • 11 minutes to read

Tip

Visit our website to explore the latest features across the DevExpress product line: What’s New in the Latest Version.

#RAD Studio 12.2 Support

Starting from v24.1.6, DevExpress VCL libraries officially support Embarcadero’s newest IDE (Delphi 12.2 and C++Builder 12.2 – 32 and 64 bit).

#Modern 64-bit C++ Compiler Support

We now support modern C++ compiler-related features. For technical information in this regard, please refer to the following: second Behind the Build webinar and documentation on upgrading with key things to know.

The new toolchain targets Windows 64-bit Intel apps, and is based on Clang 15, with a new STL, a new C++ runtime, and uses the Windows Universal C Runtime (UCRT). It has a new linker, and uses the COFF and PDB object and debug file formats.

All binaries (the compiler, linker, etc.) are 64-bit EXEs, meaning they can handle large memory requirements – and you’d be surprised how often this is needed for C++. This even includes when compiling in the IDE, where we call out to the external process.

Source: https://blogs.embarcadero.com/the-new-clang-toolchain-in-cbuilder-12-1/

Note

We cannot push this capability to v24.1 (and earlier) due to costs and associated risks (new IDEs and standard libraries introduced many changes and affected 40+ source code files).

#Deprecation of XE7 and XE8 Support

For additional information about this change refer to the following: The DevExpress VCL installation no longer support XE7 and XE8 (RAD Studio Delphi andd C++Builder IDEs).

#Hybrid VCL Development Proof of Concept

As you may already know, hybrid apps (apps that appear as native apps for a given platform but rely on JavaScript (JS) or other technologies inside) are becoming more and more prevalent in the marketplace. Good examples are desktop versions of Microsoft Teams and Visual Studio Code (both rely on WebView – an embedded browser – component inside a native container app for Windows, macOS, and Linux).

Our GitHub demo application illustrates the benefits of hybrid VCL development – apps that rely on a WebView component (an embedded web browser) within a native container app for Microsoft Windows. VCL developers can configure this JS widget using Delphi code and integrate JS HTML Editor commands with our VCL Ribbon control. The editor can also switch between light and dark CSS DevExtreme themes in response to changes between corresponding DevExpress VCL Skins and Palettes.

VCL Components: The HTML Editor Demo

Note

This example represents a proof-of-concept and should not be used in production. Production use also requires a license for DevExpress JavaScript products (not included in VCL subscriptions). For additional information, refer to Hybrid VCL Components (aka JS/DevExtreme Wrappers) and Additional Thoughts on Hybrid VCL Apps with DevExpress (Reporting, Dashboards, etc.)

#Performance Enhancements

v24.2 includes the following performance-related enhancements (most apply to VCL apps used on 4K or high-resolution displays).

#Faster Rendering for Vector-Based Skin Elements – Up to 40%

Primary optimizations involve use of color fill instead of rendering SVG images (applies to all vector-based skins). Enhancements include the following:

  • Approximately 20% rendering improvements for single-color skin elements.
  • Up to 40% improvement for WXI and WXI Compact skins (depending on controls used on form).

#Faster Rendering of Different-Sized Vector-Based Skin Elements – Up to 50%

v24.2 includes rendering improvements for different-sized vector skin elements (such as form borders, bar/ribbon backgrounds, etc.) As a result, DevExpress-powered user interfaces are now more responsive: zero or reduced flickering during initial paint operations, window resizing, or moving to a different display. The larger the area of an element, the bigger the improvement. This applies to about 10% of all skin elements. In our tests, rendering speed improved 10% to 50% (depending on controls and skin elements painted on a form).

#WXI Compact Optimizations

Improved rendering time by 5 – 12%.

#Dark Skins

The key optimization is to delay main form display and skin system color (white) fill.

#Faster Built-in and User Skin Loading

We fixed EXIF-related issues, which slowed down SVG element loading from skins for certain usage scenarios. We also added a cache when loading user skins from files. As a result, apps relying on custom skins execute much faster (you can experience the benefits of this change within DevExpress VCL demos). Skins and also be switched using the DevExpress VCL Skin Selector without delays at runtime.

#Test Results

The following table helps illustrate performance improvements available to you (note: measurements are performed ona 4K/high-resolution display for the first cached render operation):

Test Case v24.2, ms v24.1, ms Enhancement
Initial SVG Image load operation for skins 8 – 20 120 – 150 x7
Loading a user skin from a file (as implemented in our demos) 202 1233 x6
Drawing RibbonFormCaption or a Ribbon Form caption (2000x86px) 0.09 1.49 x16
Drawing RibbonTabPanel or a Ribbon background (2000x200px) 0.76 3.76 x5
Drawing a button (130x40px) 0.3305 0.3744 10%

To fully appreciate rendering-related benefits available in this release, please review the following videos.

Note

Video speed was reduced for demonstration purposes (to better display flickering). Forms open much faster in real-world usage scenarios.

#24.2

VCL Rendering Performance in v24.2

#24.1

VCL Rendering Performance in v24.1

#Accessibility Enhancements

Accessibility has been one of our main priorities over recent release cycles. Accordingly, we created a new Microsoft UI Automation (UIA)-powered engine and base component API/infrastructure for ongoing accessibility-related enhancements.

In v24.2, our UIA-powered engine replaced deprecated MSAA support in Bars and Navigator Bar.

Accessibility-related initiatives spill over into our v25.1 release and will include our VCL Data Grid, Tree List, Scheduler, Pivot Grid, an other data editors/data-aware controls. This is a massive undertaking and requires significant/ongoing development resources.

#Layout Control

#Layout Splitter

VCL Layout Control: A Splitter and Delimited Layout Groups

For example, you can use new splitter events to maintain a single layout item expanded within the parent group:

procedure TMyForm.SplitterItemClosed(Sender: TdxLayoutSplitterItem;
  AArgs: TdxLayoutSplitterItemMovedEventArgs);
var
  I: Integer;
begin
  for I := 0 to dxLayoutGroup1.Count - 1 do
    if((dxLayoutGroup1.Items[I].ClassType = TdxLayoutSplitterItem) and
      (dxLayoutGroup1.Items[I] <> Sender)) then
      if (dxLayoutGroup1.Items[I] as TdxLayoutSplitterItem).IsClosed then
        (dxLayoutGroup1.Items[I] as TdxLayoutSplitterItem).Open;
end;

procedure TMyForm.SplitterItemOpened(Sender: TdxLayoutSplitterItem;
  AArgs: TdxLayoutSplitterItemMovedEventArgs);
var
  I: Integer;
begin
  for I := 0 to dxLayoutGroup1.Count - 1 do
    if ((dxLayoutGroup1.Items[I].ClassType = TdxLayoutSplitterItem) and
       (dxLayoutGroup1.Items[I] <> Sender)) then
       if not (dxLayoutGroup1.Items[I] as TdxLayoutSplitterItem).IsClosed then
         (dxLayoutGroup1.Items[I] as TdxLayoutSplitterItem).Close;
end;

procedure TMyForm.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to dxLayoutGroup1.Count - 1 do
    if(dxLayoutGroup1.Items[I].ClassType = TdxLayoutSplitterItem) then
    begin
      (dxLayoutGroup1.Items[I] as TdxLayoutSplitterItem).AllowCloseOnClick := True;
      (dxLayoutGroup1.Items[I] as TdxLayoutSplitterItem).OnOpened := SplitterItemOpened;
      (dxLayoutGroup1.Items[I] as TdxLayoutSplitterItem).OnClosed := SplitterItemClosed;
    end;
end;

#BBCode

As you know, our VCL Layout Control allows you to apply custom formatting to UI element caption text using BBCode-inspired tags. With v24.2, you can also use [URL][/URL] tags to define clickable hyperlinks for layout item and group captions (like Formatted Label Editors).

v24.2 includes a universal hyperlink interaction engine across all products. This new engine allows you to define hyperlinks in text formatted using BBCode-inspired tags. OnHyperlinkClick, OnHyperlinkMouseEnter, OnHyperlinkMouseLeave, and OnShowHyperlinkHint events are now available for both the Layout Control and formatted labels. These events allow you to control all aspects of user interaction with hyperlinks, for example, replace hyperlink hint text or prevent activation of certain hyperlinks:

uses
  System.StrUtils;  // This unit declares the ContainsText global function
// ...

procedure TMyForm.dxLayoutControl1Item1HyperlinkClick(Sender: TObject;
  AArgs: TdxHyperlinkClickEventArgs);
begin
  if ContainsText(AArgs.URI, 'mailto') then  // If the clicked hyperlink contains the "mailto" URI scheme
    AArgs.Handled := True;  // Prevents hyperlink activation
end;

procedure TMyForm.FormCreate(Sender: TObject);  // Associates all layout items with the declared handler
var
  I: Integer;
begin
  for I := 0 to dxLayoutControl1.AbsoluteItemCount - 1 do  // Iterates through all layout items
    dxLayoutControl1.AbsoluteItems[I].OnHyperlinkClick := dxLayoutControl1Item1HyperlinkClick;
end;

#Skin Editor

#Usability Enhancements

With v24.2, we made it easier to locate DevExpress VCL Skin elements. You can now use Ctrl+Click key combination to display a list of target UI elements (recommended). You can also use the Highlight Element menu command to highlight a skin element within the Skin Editor preview (replicates our WinForms implementation).

VCL: Skin Element Highlighting in the Skin Editor

#Chart Control

#Configure Bar Text Position

With the introduction of our new Position property (TopInside, BottomInside, Center, Top) you now have full control over the position of TdxChartXYSeriesBarView value labels.

var
  ADiagram: TdxChartXYDiagram;
  AValueLabels: TdxChartXYSeriesStackedBarValueLabels;
  I: Integer;
begin
  ADiagram := dxChartControl1.Diagrams[0] as TdxChartXYDiagram;
  ADiagram.BeginUpdate;  // Initiates the following batch change
  try
    for I := 0 to ADiagram.SeriesCount - 1 do  // Iterates through all series in the diagram
      begin
        AValueLabels := (ADiagram.Series[I].View as TdxChartXYSeriesStackedBarView).ValueLabels;
        AValueLabels.Visible := True;  // Displays value labels for the current series
        AValueLabels.Position := TdxChartStackedBarValueLabelPosition.TopInside;
        AValueLabels.Appearance.FillOptions.Mode := TdxFillOptionsMode.Hatch;
        AValueLabels.Appearance.FillOptions.Color := TdxAlphaColors.AliceBlue;
        AValueLabels.Appearance.FillOptions.Color2 := TdxAlphaColors.LightBlue;
        AValueLabels.Appearance.FillOptions.HatchStyle := TdxFillOptionsHatchStyle.DarkDownwardDiagonal;
        AValueLabels.Appearance.FontOptions.Name := 'Arial';
        AValueLabels.Appearance.FontOptions.Size := 10;
        AValueLabels.Appearance.FontOptions.Bold := True;
        AValueLabels.TextFormat := '{V:0.000} M';  // Defines a custom label formatting pattern
      end;
  finally
    ADiagram.EndUpdate;  // Calls EndUpdate regardless of the batch operation's success
  end;
end;

VCL Chart Control: Stacked Bar Label Position Examples

We updated DevExpress Cloud-related APIs for the following VCL libraries:

  • VCL Scheduler: Updated Microsoft 365 and Google calendar support
  • Cloud Storage-related component updates
  • VCL Map Control: Out Map control now supports Microsoft’s Azure Map Services (Bing Maps replacement).

VCL Map Control: An Azure Maps Usage Example

Please refer to the following post for additional Map-related information: Important Announcement: Bing Maps for Enterprise – Service Deprecation.

#Skins

#Application-Wide Skins and Associated Global Settings

v24.2 ships with the following DevExpress Project Settings dialog:

VCL Shared Libraries: The Project Settings Dialog

The DevExpress Project Settings dialog displays Vector Skins at the top of the Available Skins list view (Raster Skins are displayed in a separate category and disabled by default).

You can use the Project Settings dialog to specify a DevExpress Skins and default palette name (WXI Compact is enabled by default) for your project.

This new dialog and the Object Inspector allow you to add a single dxSettings file and maintain app settings in one location (no need to duplicate skin registrations in your units under uses).

VCL Skin Unit Messages

#DevExpress Skins Are No Longer Applied to Non-DevExpress Forms

Previously, if you did not wish to apply DevExpress VCL Skins to all controls/forms simultaneously, you could handle OnSkinControl and OnSkinForm events for TdxSkinController.

With v24.2, you no longer need to write code for third-party forms/components when using standard VCL controls from the following list: Third Party Forms/Components. The DevExpress VCL Skin engine uses a predefined ignored list for application forms found in popular third-party UI components.