Delphi XE7 was released today with new and upgraded functionality for Windows, Android, IOS, and OSX. There have been weeks of rumors swirling around what the new features would be so here is a run down of the ones that jump out at me:
– The Form designer tool has been upgraded and named the Multi-Device Designer to better support designing forms for multiple devices. Basically how it works is you have your master form and then you can customize that form for each screen size or device. Only the customized changes are saved for the specific device and you can continue to edit the master form. The changes to the master form propagate out to the custom device forms. Basically this is how frames work in XE6 where you can make changes to the master frame but you can also make unique customization to the frame once it is included on your main form.
– Immersive mode from Android 4.4 Kitkat is now natively supported by setting the Fullscreen property of TForm. If you’ve never used the Fullscreen property before you can also use it to take your app full screen on Windows which is nice.
– The TTabControl, TEdit, TCalendar, and TListview controls have been upgraded with new functionality. TTabControl will now default the position of it’s tabs based on the platform. TEdit can be changed to a native iOS control instead of the emulated Firemonkey control. TCalendar can also be changed to the native calendar spinner control on iOS if you’d like. Lastly TListview now supports pull to refresh functionality on Android as well as iOS.
– A new Save State feature is available which will save the current state of your application which will allow it to resume where it left off if Android or IOS close the app unexpectedly. You can use this feature if you receive a low memory event from the OS which is warning your app it may be closed unexpectedly. The default location on Android for the state information is a temporary location but can be customized to be persistent.
– Delphi XE7 now has built in support for adding JAR libraries to your application. You no longer have to fiddle around with creating your own custom classes.dex file if you don’t want to in order to add third party libraries. With previous versions you had to build you own classes.dex and you can probably still do that but this automates the process. There is a new folder in the project manager called Libraries where you load your JAR files into. However, you will still need Object Pascal interface files to be able to access the functionality of the JAR files. There is a new Java2OP utility provided which will create the interface files for you. Sounds very similar to Java2Pas which I used to create interface files for the Android SDK. Download Java2OP here.
– There is now native Bluetooth and Bluetooth LE support in Delphi XE7 based on a TBluetoothManager component. Additionally, app tethering now also supports Bluetooth in addition to the existing Wifi implementation.
– Apple iOS apps are now deployed by Delphi XE7 with a binary plist file which is how XCode applications are deployed. Both plain text and binary formats are supported by IOS but some third party device management companies do not support the text format. You can convert between binary and text via a utility called plutil.
– There is a new parallel programming unit included in Systems.Threading which allows you to use parallel for loops. There is a new demo called Conways Life included with Delphi XE7 that demonstrates it’s usage. Previously in Delphi XE5 and Delphi XE6 you could do parallel loops using code a custom TParallel object but now it is built into the RTL.
There are lots of other enhancements and upgrades that I haven’t covered here so be sure to read the full list.