12 times 12 new features in Delphi 12
RAD Studio 12 includes some great improvements for C++Builder and the launch webinar and other online content highlights it. However, it is also a fantastic release for Delphi developers. Someone commented, it looks like there is little for VCL. That's not true. I don't remember a new release with so many new VCL features. So I started listing them and got 36 bullet points (in this blog post), including some very significant changes and a few minor, but still relevant, improvements. Plus many FireMonkey ones. And dozens of other improvements in the RTL, the Delphi language, the IDE, the installer, the internet libraries. I compiled a dozen improvements for each of these areas.
In the end, I compiled 12 lists with 12 improvements each for Delphi 12. So this is not a list of 12 improvements for Delphi 12. It's a list of 12 x 12 = 144 improvements, plus half a dozen for native Windows bringing the total to a whopping 150 -- excluding all the existing improvements for C++Builder, as here I want to underline the Delphi side (but most of the features below are in fact for both languages).
Ready? This is the first blog post of my12 x 12 features for Delphi 12 list, with 3 lists. These 36 are all VCL improvements. All of these equally apply to C++Builder 12 and RAD Studio 12. Stay tuned for more blog posts.
In VCL: MDI and Forms management
- MDI Reworked for HighDPI and VCL Styles support
- Child forms can now have a new modern flat border (the new property is TStyleManager.ChangeChildFormSystemBorder)
- MDI Child disabled border icons are not drawn
- The Parent property works for nesting any form in any other form, with full border management
- A significant MDI cleanup and improvements
- The brand new TFormsBar control
- The Auto Hiding of minimized child windows
- The IFormVisualManager Interface
- The VisualManager property of the TCustomForm class
- The updated MDI Wizard
- A new ShowInTaskbar property for TForm
- A new CreateScaledNew constructor in the TCustomForm class
The MDI app generated by the wizard
VCL foundations and designers
- TFont.Size property adapts to different DPIs: new TFont.IsDPIRelated, TFont.IsScreenFont, TFont.ChangeScale method, TFont.ScaleForDPI method
- A new String List editor
- A multiline string editor
- A Quick Panel configuration
- A Quick Radio Group configuration
- A Quick Button configuration
- The Control child enumerator accessible via GetControls method of the TControl class
- New MsgDlgIcons global variable
- New TDoubleBufferedMode enumerated type, new DoubleBufferedMode property of that type, and a new CanUseDoubleBuffering method for controls
- New TWinControl ChildHandlesNeeded method
- The VCL StyleAPI.inc file is now replaced by two specific and clean units: Vcl.StyleAPI.pas and Vcl.StyleBitmap.pas
- Additional image formats in TImage via Skia
The new string list editor
VCL Controls
- Tile View support to TListView (including new TileOptions and TileColumns properties)
- TGroupCollection now has two Items properties
- New ToolButton style: tbsWholeDropDown
- TNumberbox control has an additional “nbmInt64” mode accepting 64-bit numbers in input
- ActivityIndicator has support for custom color (IndicatorCustomColor property), new RotatingLines and Refresh predefined icons and more enhacements
- TControlList has new SelectedItemsCount and SmoothMouseWheelScrolling properties
- TControlList adds support for more element types such as TControlListCheckBox and TControlListRadioButton
- TWICImage and TImageCollection now have a Dormant() method to reduce GDI usage
- The new TSkLabel Skia-based component for VCL
- The new TSkPaintBox Skia-based component for VCL
- The new TSkAnimatedPaintBox Skia-based component for VCL
- The new TSkSvg Skia-based component for VCL
The new Activity Indicator predefined icons