Following up on my last week "My 13 Top New FireMonkey Features in RAD Studio 13", this is a similar blog post focused on the VCL library. While there are no new brand components, there are very significant improvements to existing ones, opening up additional opportunities to create modern looking applications for Windows 11 just using the build-in controls.

Again, my "13 Top Features" list is a personal selection of changes I find impactful. It's a personal list, as the title implies, as there are other new features you might find more interesting than what I've selected. Also notice that this list is focused on new features, but the R&D team also addressed a large number of issues and inconsistencies, and worked on platform APIs and integration.

VCL 1: TitleBar Styling and More Controls

The TitleBarPanel in Ganymede supports custom VCL styles. In other words, the release adds support for drawing styled controls in the title bar area, a feature requested since the TitleBar was introduced a few years ago. 

vcl13_01
 

In addition, there is a new TTitleBar.StyleColors property to enable automatic use of the VCL Styles colors for background and buttons on the title bar. The support includes using the following controls on the TTitleBarPanel (non-styled and styled): TButton, TSpeedButton, TCheckBox, TRadioButton, TToolBar, TEdit, TComboBox, TFormTabsBar, but also TActionToolBar and TActionMainMenuBar.

See also the preview blog post covering this feature at https://blogs.embarcadero.com/coming-in-florence-titlebar-styling-and-scrollable-actionmenus-in-vcl/ 

VCL2: ControlList Improvements

The ControlList component supports a new type of hosted control, the SplitButton. Notice this can be seen in action in the IDE in the GetIt package managed dialog box. 

To implement this, we added The clbkSplitPushButton and clbkSplitToolButton styles for the TControlListButton control. You can change this value in the Style property of the component. The TControlListButton control has a DropDownMenu property to associate the menu.

vcl13_02

There is another ControlList enhancement: a OnGetItemHint event and a ShowItemHint property to offer per-item hints, rather than global control hints. 

VCL 3:  Improvements to FormsTabsBar component

RAD Studio 13 Florence offers several improvements to the FormsTabsBar component, introduced in RAD Studio 12:

  • Transparency support with the new Transparent and ShowBottomLine properties.
  • A new OnGetTabCaption event making the control more flexible.
  • The TabFromPoint and TabIndexFromPoint methods are now public, for additional customization
  • A new MouseMiddleButtonClose property offers the option to close a tab with the middle mouse button (it's disabled by default).
  • The term has also fixed mouse wheel scrolling.

vcl13_03

Overall the enhanced FormsTabsBar component and its ability to be displayed in the Titlebar makes it very easy to use the VCL library to build Windows applications with contemporary UI.

VCL 4: EdgeBrowser

This release updates the interfaces to the Microsoft WebView 2 control (aka Chromium-based Edge) to version 1.0.3296.44 of the WebView2 SDK.

In addition we updated the TEdgeBrowser component (and the matching demo) to support AddWebResourceRequestedFilterWithRequestSourceKinds.

In general terms, TEdgeBrowser offers an easy-to-integrate and modern web browser, with full programmatic control (including the integrated JavaScript engine) within your VCL applications.

VCL 5: WinUI 3 Demo

This release refreshes the WinUI 3 headers and the standalone WinUI 3 demo, which were previously available as a separate download from GetIt and are now integrated into the core product demos. YOu can see the demo also at:

https://github.com/Embarcadero/RADStudio13Demos/tree/main/Object%20Pascal/VCL/WinUI3/WinRTExample

VCL 6: ActionMainMenuBar Scrolling

We have added a new scrolling feature for the TActionMainMenuBar control, which is enabled when the vertical height exceeds the screen height. This has been a long time request by developers, but complex to implement due to limitation of the underlying Windows platform control. 

You can see an example of this feature in action below. 

vcl13_04

Notice that this is also potentially used by the RAD Studio IDE, in case it's executed on a very low resolution screen.

VCL 7: Removed leftover Win98 code

I know this can look like a minor change specific, but I think it's important we trim code specifric to very old unsupported versions of the operating system, as they add weight to the VCL and are really not needed any more. This is not meant to prevent running VCL applications on very old versions of Windows, but stop surfacing specific features for those versions, superseded in newer releases.

VCL 8: Improved the TToggleSwitch control 

We have improved the UI of the ToggleSwitch control, to make it look more aligned to the current UI in Windows 11 toggle switch. We've also been updating some of the VCL "Windows 10" family of styles to modernize them a bit -- even if they are called "Windows 10" they support Windows 11.

Here you can see some platform and styles ToggleSwitch control, in the off and on state, at design time (remember, you can have styles at design time in VCL and you can have multiple controls painted with different types in the same form!)

vcl13_05

VCL 9: More Flexible Category Buttons

The CategoryButtons control is a little used, but very powerful, UI element. The RAD Studio IDE uses it, for example, for the Tool palette (see below). We added Visible and Enabled properties of TButtonItem (the individual elements) and TButtonCategory.

vcl13_06

VCL 10: Form Border in Styled Apps

I know that this will look like a minor extension, but the form border style depends on the actual style in use, when using VCL styles. The addition of the new TStyleManager.FormBorderSize property makes it possible to customize this very visible UI element.

VCL 11: Chancing Calendar Selection

Somehow, it was always easy to track changes to the selected data in the Month Calendar component. Now there is a new specific event, TMonthCalendar.OnChange. If you use the component, it can be handy!

VCL 12: New TCanvas Overloaded methods

The TCanvas class is at the heart of the classic GDI graphic rendering in VCL. (As a reminder, VCL also supports Direct2D painting and the Skia graphic system.) The TCanvas class now offers new overloaded methods with take a TPoint parameter, rather than two separate coordinates:

  • AngleArc
  • Draw
  • LineTo
  • MoveTo
  • FloodFill
  • TextOut

vcl13_07

VCL 13: Tracking the Splitter

The Splitter control has been in the VCL for a long time. It is used to let an end user change the relative surface of two adjacent controls. The controls offers a few ways for tracking the customer resize operations, and we added two new events:

  • OnBeforeResize
  • OnAfterResize

This makes it easier to enforce a specific logic when the user resizes a control

The VCL Library Keeps Improving

As you can see in this blog post VCL keeps improving in terms of features and quality. RAD Studio Visual Component Library is by far the best and most complete Windows client library available in the industry, with long term support for your code base combined with the adoption of the most recent Windows API and UI features.  

If you are building Windows client applications, it's hard to find anything better, considering also the minimal deployment size, the non-existent runtime dependencies and associated security risks.

After looking at FireMonkey and VCL, stay tuned for more blog posts with lists of features in other RAD Studio libraries.