My five favorite new features in RAD Studio 10.4 Sydney

by Jun 5, 2020

There are so many great new features in 10.4 Sydney, but when asked for a top five I had to prune my list a lot. Here are my top five favorite new features in RAD Studio 10.4 Sydney.

1) The new TEdgeBrowser component is a great advance for building Windows apps. Even better is the update to the TWebBrowser component that give developers flexibility to select which browser engine you want to use: IEOnly, EdgeIfAvailable, EdgeOnly. The following is a simple C++Builder example using TWebBrowser.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	switch (RadioGroup1->ItemIndex) {
		case 0:  WebBrowser1->SelectedEngine = TWebBrowser::TSelectedEngine::EdgeIfAvailable; break;
		case 1:  WebBrowser1->SelectedEngine = TWebBrowser::TSelectedEngine::EdgeOnly; break;
		case 2:	 WebBrowser1->SelectedEngine = TWebBrowser::TSelectedEngine::IEOnly; break;
	default:
		WebBrowser1->SelectedEngine = TWebBrowser::TSelectedEngine::IEOnly;
        ;
	}
	WebBrowser1->Navigate(Edit1->Text);
}
procedure TForm1.Button1Click(Sender: TObject);
begin
  case RadioGroup1.ItemIndex of
    0: WebBrowser1.SelectedEngine := TWebBrowser.TSelectedEngine.EdgeIfAvailable;
    1: WebBrowser1.SelectedEngine := TWebBrowser.TSelectedEngine.EdgeOnly;
    2: WebBrowser1.SelectedEngine := TWebBrowser.TSelectedEngine.IEOnly
  else
    WebBrowser1.SelectedEngine := TWebBrowser.TSelectedEngine.IEOnly
  end;
  WebBrowser1.Navigate(Edit1.Text)
end;

Declarations for TSelectedEngine and TActiveEngine:

Studio\21.0\include\windows\vcl\SHDocVw.hpp:

	enum DECLSPEC_DENUM TSelectedEngine : unsigned char { IEOnly, EdgeOnly, EdgeIfAvailable };
	enum DECLSPEC_DENUM TActiveEngine : unsigned char { None, NoneYet, IE, Edge };

Studio\21.0\source\internet/SHDocVw.pas:

      /// <summary>
      ///   The type of the SelectedEngine property of TWebBrowser
      /// </summary>
      TSelectedEngine = (
        /// <summary>
        ///   Use the traditional Internet Explorer WebBrowser browser control
        /// </summary>
        IEOnly,
        /// <summary>
        ///   Use the Edge WebView2 browser control if possible, an exception is raised
        /// </summary>
        EdgeOnly,
        /// <summary>
        ///   Use the Edge WebView2 browser control if possible, otherwise fall back to using the Internet Explorer
        ///   WebBrowser browser control
        /// </summary>
        EdgeIfAvailable);
      /// <summary>
      ///   The type of the ActiveEngine property of TWebBrowser
      /// </summary>
      TActiveEngine = (
        /// <summary>
        ///   There is no browser control in use
        /// </summary>
        None,
        /// <summary>
        ///   No browser control is in use yet, but initialization of the Edge WebView2 control is being attempted
        /// </summary>
        NoneYet,
        /// <summary>
        ///   The Internet Explorer WebBrowser control is in use
        /// </summary>
        IE,
        /// <summary>
        ///   The Edge WebView2 browser control is in use
        /// </summary>
        Edge);

2) I also enjoy the new style selection options that let developers specify styles at the form and component levels. Marco talks about this feature in a recent blog post.

3) For Android development a great new feature is the support for AdoptOpenJDK will relieve developers from Oracle’s licensing and support rules. All AdoptOpenJDK binaries and scripts are open source licensed and available for free.

4) The move to a non-ARC unified memory management implementation across all platforms, offering better compatibility with existing code, performance advantages, simpler coding for components, libraries and end user applications. For the C++ compilers this significantly simplifies the compiler and RTL.

5) Finally, installation is simplified by having one installer application that works in both online and offline modes along with an improved GetIt Package Manager. You can use the standalone executable installer that can run in online and offline mode.  For my install, I used the .ISO file which contains the executable installer and the GOF (GameExchange Raw Object Definition) files.

Using the 7-Zip utility, the GOF file contains the following files and folders.

The getit folder contains all of the installation files that would have been downloaded in an online install.

One point to note: if you use the “offline” installer as I did, in order to have the RAD Studio IDE use the online GetIt Package Manager for patches and additional installs, you’ll need to run the GetIt Package Manager command line utility (available in the Studio\21.0\bin folder to set the online vs offline setting.

GetItCmd -c=[useonline/useoffline]

GetItCmd -c=useonline

What’s New in RAD Studio 10.4 Sydney

You can find a longer list of What’s New in RAD Studio 10.4 Sydney on the Embarcadero DocWiki.