What's New in Seattle

From RAD Studio
Jump to: navigation, search

Go Up to What Was New in Past Releases


The Seattle release contains the following new and improved features.

Note: For compatibility with OS X 10.11 (El Capitan) and iOS 9, see OS X 10.11 and iOS 9 Notes.

Contents

C++ Compilers

New Clang-enhanced C++ Compiler for 32-bit Windows

BCC32C is a Clang-enhanced C++ compiler for 32-bit Windows. BCC32C allows you to take advantage of many C++11 features, and it makes it easier to maintain a single code base to target both 32-bit and 64-bit Windows.

BCC32C does not replace BCC32; RAD Studio lets you choose which compiler you want to use for each of your projects. BCC32 is the default C++ compiler for 32-bit Windows. To switch a project to BCC32C, select Project > Options > C++ Compiler and, under Classic Compiler, disable the "Use 'classic' Borland compiler" option.

Updated Clang and LLVM Versions

BCC32C and BCC64, Clang-enhanced C++ compilers for Windows, are both updated to Clang 3.3 and LLVM 3.3.

Parallel Compilation for Clang-enhanced C++ Compilers

In Seattle, you can enable parallel compilation in Clang-enhanced C++ compilers to significantly decrease compilation time in systems with multi-core processors.

Previous-generation C++ Compilers __property Keyword Limitation

The BCC32 and BCCOSX compilers do not support the default keyword on indexed properties. See __property - Compiler Support for more information.

New Constant for Clang-enhanced C++ Compilers

The RTLVersion constant is not supported by Clang-enhanced C++ compilers. Instead, you may use RTLVersionC.

FireMonkey

FireMonkey Supports Windows 10

FireMonkey fully supports creating native applications for Windows 10. The framework automatically detects the target platform, loads and displays the appropriate native style at run time, without you needing to add a stylebook or any code.

Drag and Drop onto Other Applications on OS X

IFMXDragDropService, the FireMonkey platform service that provides support for drag-and-drop operations, now supports dragging data from a FireMonkey application onto another application.

New FireMonkey Styles

New Windows 10 FireMonkey styles included on Seattle: Win10Modern.Style, Win10ModernBlue.Style, and Win10ModernDark.Style.

Access the FireMonkey styles at C:\Users\Public\Documents\Embarcadero\Studio\17.0\Styles.

New FireMonkey Native Windows Presentation

The following controls now support native presentation on the Windows platform:

See how FireMonkey controls support Z-order for Windows.

For more information about native Windows controls, see FireMonkey Native Windows Controls.

Tab Scrolling in a Tab Control

The TTabControl component supports tab navigation with scrolling when the width of all the tabs does not fit in the tab control width. To use this feature, you need to set the FullSize property to False.

When the width of all the tabs does not fit in the tab control width, at design time, you see the right and left buttons that indicate that scrolling to hidden tabs is possible at run time. In devices that have touch screen, you can slide the tabs to move them. In devices that do not have touch screen, to scroll between the tabs, you can use the right and left buttons, as well as the mouse scroll. The right and left buttons appear only at design time, and at run time if the device does not have touch screen.

You can change the height of the tab items. To change the height, the AutoSize property needs to be False.

Removal of TCalendar Size Constraints

RAD Studio Seattle does not have size constraints for the TCalendar component.

You can now change the Height and Width of the TCalendar, and even set the Align property to Client.

Note: The TCalendar size constraints have also been removed for iOS native calendar components; you can change the size of the native calendars for iOS 6 or later.

The Native iOS List View Supports Custom Appearances

You can use custom appearances in native iOS list view controls.

FireMonkey Visual Controls can Display Hints on Mouse-over

FireMonkey visual controls now support hints on desktop platforms. To set a hint, enter the text in the Hint property of the control in the Object Inspector and set the ShowHint property to True. See Using Hints to Show Contextual Help in a FireMonkey Application for more information on how use hints.

Note: Hints are supported on Windows and OS X 10.10 or newer.

Touch Animation for Android

Touch animations have been included in Seattle for the Android platform. This new type of animation simulates the touch animation from Google Material Design guide.

You do not need to do anything to enable or disable the animation, it is enabled by default. The animation is included for the TListBox and for buttons such as TButton, TCornerButton, and TSpeedButton.

See the TTouchAnimationAdapter class, the TActiveStyleObject.TouchAnimation and the TButtonStyleObject.TouchAnimation properties for further details.

System Notifications Move to the RTL and Gain Windows Support

The FMX.Notification unit has been replaced by System.Notification.

The TNotificationCenter component now supports Windows 8 and later Windows versions. This component has also undergone some minor changes:

  • It provides a Loaded property to check whether the notification center is ready to use or not.
  • The type of ApplicationIconBadgeNumber has changed from Word to Integer.
  • Its Supported method is no longer necessary and has been removed.

The TBaseNotificationCenter class has replaced the IFMXNotificationCenter interface. Classes that used to implement the IFMXNotificationCenter interface must become subclasses of TBaseNotificationCenter and implement the virtual abstract methods of their parent class.

FireMonkey Style Designer

Platform Styles

The FireMonkey Style Designer allows now setting a different style for each different platform of your project, at design time. Just one TStyleBook can now manage a collection of styles.

Control Customization

RAD Studio allows now component customization for different platforms at design time.

For more information, see Mobile Tutorial: Using a Button Component with Different Styles (iOS and Android).

New Bitmap Links Editor

A new editor allows graphic edition for TBitmapLink properties on styled objects, directly inside the IDE.

TBitmapLink properties can be edited now in an easy and visual way using the BitmapLinks Editor.

For more information, see BitmapLinks Editor and Tutorial: Using the BitmapLinks Editor.

More Improvements

  • New toolbar to load, save, and clear .style files.
  • Different backgrounds for style editing. You can choose no background or a light/dark one. The color helps you see how the customized control fits over dark and light colors.
  • Selecting and managing the different style layout objects and components directly in the Style Designer.
  • Adding new controls to the Style Designer by double-clicking the control in the Tool Palette.

New GetFirstWeekday Function

FireMonkey provides the new GetFirstWeekday function within the IFMXLocaleService interface.

GetFirstWeekday returns the first day of the week in a unified format that is platform independent.

Note: GetLocaleFirstDayOfWeek is deprecated. Use GetFirstWeekday instead.

Styled Presentation Constructors Receive the Data Model and Control

In Seattle, styled presentation classes receive both their data model and their presented control in their constructor, which makes creating presentation classes much easier.

To port your presentation classes from XE8 to Seattle, remove any code that you have for the delayed initialization of the data model and the presented control, and move that code to your constructor instead.

Refactoring of the List View Control

Many members that used to be in TCustomListView are now in a different class or even a different unit. Members that went into a different class continue being a part of TCustomListView through inheritance.

For a detailed list of changes, see Refactoring of the List View Control in Seattle.

TStyledPresentationProxy Replaces All Styled Presentation Proxy Classes

Styled presentation classes no longer need to define a proxy class. The new TStyledPresentationProxy class can be used to create a proxy object for any styles presentation class. All existing styles presentation proxy classes have been removed:

XE8 Seattle

TStyledCalendarProxy
TStyledCalendarEditProxy
TStyledComboEditProxy
TStyledComboTrackBarProxy
TStyledEditProxy
TStyledEditBoxProxy
TStyledMemoProxy
TStyledOverlayLayoutProxy
TStyledShadowedLayoutProxy
TStyledNumberBoxProxy
TStyledScrollBoxProxy
TStyledSearchBoxProxy
TStyledSpinBoxProxy
TStyledSwitchProxy

TStyledPresentationProxy

Refactoring of TCalendar

TCalendar changes:

  • TCustomCalendar has been introduced as base class for controls that display a month calendar. Now TCalendar inherits from TCustomCalendar. Both classes are located in the FMX.Calendar unit.

TStyledCalendar changes:

  • The TStyledCalendar.FillList method that was in XE8, has now being separated in the following different procedures:

Other FireMonkey Changes

  • C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Multi-Device Samples\User Interface\CopyPaste
  • C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\CPP\Multi-Device Samples\User Interface\CopyPaste

VCL

New VCL Windows 10 Controls

The following controls are added to the VCL:

  • TRelativePanel: RelativePanel is a new layout panel that lets you position and align child objects in relation to each other or the parent panel. For example, you can specify that some text will always be positioned to the left side of the panel, and that a button will always be placed below the text. Use ReleativePanel when creating user interfaces that do not have a clear linear pattern as an alternative to TGridPanel.
  • TSplitView: The new SplitView control allows you to easily show and hide transient content. For example, you may use it as a top level navigation menu where the navigation content is hidden and slides in when needed (so called hamburger menu).
  • TToggleSwitch: The toggle switch mimics a physical switch that allows users to turn things on or off. The control has two states: on and off. You can modify or remove the caption labels of the toggle switch.
  • TActivityIndicator: An indeterminate progress ring indicator. This indicator lets you choose between several types and allows you to modify many visual properties, such as size, speed of animation, indicator color.
  • TSearchBox: An edit control that provides search capabilities, similar to FireMonkey TSearchBox.

These controls are made specifically for Windows 10, but support all Windows versions.

Sample aplications for the new VCL Windows 10 controls demonstrate the usage and the functionality of these controls:

New TSharingContract Component

TSharingContract component brings support for contracts, the system mechanism for sharing information with other Windows 10 applications. Applications can behave like contract sources using the new SharingContract component.

See Windows Dev Center - App contracts and extensions for more information on app contracts and sharing.

New VCL Styles

  • New Windows 10 VCL styles included on Seattle: Windows10, Windows10 Blue, and Windows10 Dark.
  • New OnyxBlue style.

Access the VCL styles by going to Project > Options > Application > Appearance.

VCL Styling Improvements

  • Support for styling common dialogs. See SystemHooks for more information.

For more information about VCL styling, see Working with VCL Styles.

Modernized Select Directory Dialog

SelectDirectory has been modified in order to display a modernized Select Directory dialog. Use the third signature of the SelectDirectory function and define your set of options as a TSelectDirFileDlgOpts.

ModernizedSelectDirectory.png

RTL

Registering Your Application to Handle Android Intents

In XE8, the only way to receive intents was with local or push notifications. In Seattle, the built-in RAD Studio Java library Androidapi.JNI.Embarcadero allows registering your application to handle any given type of intent action.

Check out the Android intents sample application to see how to handle simple data from another application using Android intents.

Note: To be able to handle Android intents, you must add the corresponding <action> tag to the <intent-filter> section of the AndroidManifest.xml file.

JSON Improvements

The System.JSON scope has been extended with many new units that provide support for:

  • BSON, a binary alternative to the JSON format.
  • JSON readers and writers, to generate and parse JSON data on the fly, without first building a complete JSON tree in memory.
  • MongoDB extended JSON, an extension to the JSON format to support additional data types. You can enable this JSON extension in JSON readers and writers using their ExtendedJsonMode property.

Also, TJSONObject.ParseJSONValue and TJSONObject.Parse allow creating a TJSONBool value from the parsed data.

Running Asynchronous Remote Actions

Use the new RunRemoteActionAsync method to run remote actions asynchronously. By using asynchronous actions, the function that calls this method is not blocked until the remote action finishes.

For more information about this, see Running Remote Actions.

GATT Server Support for Android 5

In Seattle you can create a Bluetooth Low Energy server on Android 5.

Support for Internationalized Domain Names

The HTTP framework now supports Internationalized domain names (IDN). There are two new public methods available: TURI.UnicodeToIDNA and TURI.IDNAToUnicode.

Support for SHA-2 Hashing

The System.Hash unit has a new member, THashSHA2, that implements the SHA-2 family of hash functions.

Bluetooth Improvements

Refactoring of the App Tethering Communications

The base class for app tethering profiles, TTetheringProfile, implements now the aclogic to parse app tethering commands (which was previously implemented in base class for app tethering protocols) as well as the logic to handle remote profiles and connections, which was previously implemented on its child class TTetheringAppProfile.

For a detailed list of changes, see Refactoring of the App Tethering Communications in Seattle.

Other RTL Changes

IDE

Memory Improvements

In Seattle, the RAD Studio IDE includes some notable improvements related to memory consumption and management:

  • The IDE can now use up to 4 GiB of memory, it is no longer limited to 2 GiB.
    Note: IDE extensions must support large memory addresses.
  • The IDE memory management of open projects has improved. The IDE can now handle a higher number of open projects.

New Android Service Project

RAD Studio provides a new Delphi type of project to create Android services.

The new type of project covers the different types of services: local and remote, and includes support for asynchronous tasks using intents.

The Android Service project consist of a Data Module to create the methods and events for the service. Building the project creates the binary files that the main application needs, such as the Java archive file (.*JAR), according to the selected type of service.

To create an Android Service:

For more information see Android Service, and Creating Android Services.

Improved Support for Multi-Monitor Configurations

Seattle improves user experience in multi-monitor configurations.

Integration of the Castalia Features in the IDE

Some of the Castalia features have been embedded in the IDE for RAD Studio Seattle:

  • Clipboard History: Shows the items stored when you copy text. You can find the Clipboard History window in View > Clipboard History.
  • MultiPaste: Allows you to modify text you copied before pasting it. You can find the MultiPaste window in Edit > MultiPaste.
  • Project Statistics: Shows the time spent in the different areas of our project. You can find the Project Statistics window in View > Project Statistics.
  • Navigation Toolbar: Displayed in the Code Editor to help you move through your code. The Navigation Toolbar includes the Project Symbol Search.
  • Sync Prototypes: Feature to synchronize the interface and implementation copies of your methods.
  • Structural Highlighting: Highlights the code structure with lines, as well as the use of procedures that interrupt the linear flow execution in your code. You can find further options for this feature in the Structural Highlighting options page.
  • Smart Keys: Provides shortcuts to place the cursor at the beginning of the line or text; as well as a fast way to surround your code with "()", "[]", or "{}". These features can be enabled or disabled from the Key Mappings options page.

AutoRecover

The AutoRecover feature allows you to recover your files when the IDE closes unexpectedly.

You can find further settings for the AutoRecover feature in the AutoRecover options page.

Changing the Font Size of the Code Editor

You can increase or decrease the size of the font in the Code Editor using the context menu of the Code Editor, or using keyboard shortcuts:

  • Use the Increase Font Size and Decrease Font Size options available in the Code Editor Context Menu to increase and decrease the font size.
  • Use the Ctrl+Num + and Ctrl+Num - keyboard shortcuts to increase and decrease the font size respectively. Visit Keyboard Mappings Index to see more shortcuts.

Subversion Libraries Update in the IDE

In Seattle, RAD Studio includes Subversion libraries version 1.8.13.

For more details about version control systems integrated in the IDE, see Subversion Integration in the IDE and Version Control Systems in the IDE.

GetIt Package Manager Improvements

The following improvements have been added to GetIt Package Manager in Seattle:

  • New improved UI for the GetIt Package Manager Window.
  • Ability to filter packages by category.
  • In RAD Studio Seattle Subscription Update 1, there is a new options page at Tools > Options > GetIt where you can configure the GetIt Package Manager to check for package updates upon start.

Renamed Labels in OS X - Application Store Provisioning Page

Provisioning options for code-signing an OS X application for the Application Store have been renamed to 3rd Party Mac Developer Certificate and 3rd Party Mac Installer Certificate, to match the names that Apple uses for those certificates.

For more information about code signing applications, see the Provisioning page.

New Option to Allow iOS 9 Applications to Access non-SSL URLs

Note: This only affects RAD Studio Seattle Subscription Update 1.

New option in Project > Options > Entitlement List to enable HTTP protocol requests on iOS 9.0. This option is enabled by default.

New Option to Add Support for Background Execution on iOS

Now the IDE allows you to include in the Info.plist support for background execution mode on iOS application.

In Project > Options > Version Info you can add to the array key UIBackgroundModes the string values for the services that require to continue running in the background.

New Option to Enable High-DPI Awareness in Your VCL Applications

Now the IDE allows you to enable High-DPI Awareness in your VCL applications.

In Project > Options > Application you can check the Enable High-DPI option for your project.

Object Inspector Improvements

  • A new filter box shows properties or events that match the specified pattern. The new option is located under the Instance List from the Object Inspector.
  • More granularity for the Object Inspector. A new Show option on the context menu allows to show or hide the different parts of the Object Inspector.
    • Instance List
    • Filter Box
    • Quick Action Panel
    • Description Panel (hidden by default)
    • Status Bar

The new options can also be accessed on Tools > Options | Environment Options > Object Inspector.

For more information, see Object Inspector Options.

New Icons for the Structure View

The icons on the Structure View correspond now to the icons on the Tool Palette. The thumbnails help you to easily spot the application components on the Structure View.

New Default Value for InstallLocation Parameter in Android Manifest

The new default value for the InstallLocation parameter in the Android application manifest file is auto. See the Android Version Info section for more information. Changing this value in your older projects may help solve some specific debugging problems.

New Option to Hide Non-visual Components at Design-time

The IDE now allows you to hide or show non-visual components at design-time.

New Look and Feel for the Select Directory Dialog

The IDE now displays a modernized Select Directory dialog for folder searching. The Select Directory dialog allows you to type or paste a folder path.

ModernizedSelectDirectory.png

For example, you can find this dialog in the File Finder ( Ctrl-Shift-F).

Tools API Improvements

  • Editor Drawing Interface: New drawing Tools API interfaces have been added to extend the code editor in order to improve custom painting.

See how to extend the IDE using the Tools API.

Improved Support for Older Project Import

Seattle supports import of projects from Delphi 1 through XE8 and C++Builder 3 through XE8.

Database Changes

DataSnap

Compressed Transmission of FireDAC Datasets

In Seattle, transmission of FireDAC datasets between a DataSnap server and a DataSnap client is compressed. As a result, both server and client consume roughly a third of the memory that they would consume if built using XE8.

Some DataSnap Client Applications no Longer Require OpenSSL

Some Datasnap client applications no longer requires OpenSSL for HTTPS support:

Note: DataSnap client applications that use filters need to install OpenSSL libraries.

New DataSnap Demo Samples

RAD Studio includes now two new samples of the use of the FDSchemaAdapter in DataSnap applications:

  • The FireDAC sample in Object Pascal\DataSnap\FireDAC.
  • The FireDAC DBX sample in Object Pascal\DataSnap\FireDAC_DBX.

FireDAC

Optimization of FireDAC ETL components

TFDBatchMoveSQLWriter supports all the possible TFDBatchMove data movement modes.

Note: The dmAppendUpdate mode is only supported when the database supports MERGE, INSERT OR REPLACE or similar DML commands.

Support for the NoSQL MongoDB Database

In Seattle, FireDAC includes complete support for the NoSQL MongoDB database.

Use the new FireDAC connection driver, the API classes and the new components to develop applications that connect to the MongoDB database.

See Connect to a MongoDB database with FireDAC for details.

Connecting to a MongoDB Database

Use the new FireDAC MongoDB driver to establish the connection to the MongoDB database.

MongoDB Wrapping Classes

FireDAC now includes new wrapping classes to encapsulate MongoDB database commands, methods, and structures:

  • TMongoConnection: class to manage connections to a MongoDB server, access databases and object collections.
  • TMongoDatabase: class to manage a MongoDB database, collections and users in the MongoDB database.
  • TMongoCollection: class that represents a MongoDB collection.
  • TMongoCursor: class that fetches a result set document from a MongoDB cursor.

MongoDB Commands and Methods Builders

FireDAC now supports MongoDB query, pipeline and update commands, with fluent style command and method builders.

New MongoDB DataSets

FireDAC MongoDB specific datasets retrieve and manage the data from a MongoDB database.

  • Use the TFDMongoDataSet component to attach the dataset to the MongoDB cursor.
  • Use the TFDMongoQuery component to execute queries to the MongoDB collections.
  • Use the TFDMongoPipeline component to execute pipelines to the MongoDB collection.

Enhancements to the ODBC driver

The ODBC driver for FireDAC has been improved:

  • If you use the ODBC driver and a Pervasive 10 database, by default the NumericFormat parameter is String.

Other FireDAC Changes

REST Client Library and BaaS

{
  "__type": "Date",
  "iso": "2015-08-25T18:32:12.265Z"
}

Cloud

Cloud API no Longer Requires OpenSSL

Both AmazonAPI and AzureAPI no longer require OpenSSL for HTTPS support.

Some Members of CloudAPI are Deprecated

Amazon

  • AmazonAPI now supports the latest API versions:
    • Amazon Simple Storage Service (S3): API Version 2006-03-01
    • Amazon Simple DB: API Version 2009-04-15
    • Amazon Simple Queue Service (SQS): API Version 2012-11-05
  • AmazonAPI now supports AWS Signature version 4:
    • This change is transparent for the user.
    • The API uses the AWS Signature version 4 wherever possible, but maintains backwards compatibility.

Azure

  • AzureAPI now supports the latest API versions:
    • Microsoft Azure Blob Service: API Version 2014-02-14
    • Microsoft Azure Table Service: API Version 2014-02-14
    • Microsoft Azure Queue Service: API Version 2014-02-14
  • The method for leasing a blob now allows you to specify a LeaseDuration parameter. See Microsoft Azure - Lease Blob for more information about the new LeaseDuration parameter.

Debugger Changes for Seattle

Remote iOS 64-bit Device Debugging

In Seattle, debugging iOS64 applications is now supported. In the IDE, F9 is now enabled when iOS Device 64-bit is the target platform.

For more information about remote debugging support for 64-bit iOS applications, see Debugging Apps Running on the 64-bit iOS Device.

Improved OS X Exception Handling

Seattle better handles exceptions on OS X.

Testing Framework Changes for Seattle

In Seattle, RAD Studio extends DUnitX unit testing support for mobile platforms (iOS and Android). This testing framework enables you now to develop and execute tests against your iOS Device, Android and iOS Simulator.

For further information, see DUnitX Overview.

Integrated Frameworks and SDKs

  • Microsoft Windows 10 SDK is now installed with RAD Studio Seattle. RAD Studio Seattle also supports the following SDKs:
    • Microsoft Windows 8.x SDK
    • Microsoft Windows 7 SDK
  • RAD Studio Seattle now supports Windows RT API (Windows Runtime API) and the Windows API.

Help

Sample Applications Include Better Readme Files

The project subfolders within the sample applications folder now include HTML readme files generated from the content of the sample applications documentation. These readme files contain detailed information about each sample application, including a description, steps to run the sample application, and links to related help resources.

Libraries Documentation Shows Unit Packages

Unit pages in the libraries documentation now show which package contains each unit. If you want to know which package includes a certain unit, open the API reference page of that unit, such as System.SysUtils or FMX.Controls.

Improved Navigation Using Disambiguation Pages and Redirections

For some of the terms most commonly searched on the online topics documentation, we now provide disambiguation pages or redirections to help you find the documentation that you want more easily. For example, search for datasnap, android, paserver, or listview.

OS X 10.11 and iOS 9 Notes

PAServer Hotfix for RAD Studio Seattle

This Hotfix provides fixes for:

  • Building OS X 10.11 (El Capitan) applications
  • Building iOS applications that run on iOS 7, iOS 8 and iOS 9 using the iOS 9 SDK.

You can download the Hotfix from: http://cc.embarcadero.com/item/30398