What's New in Appmethod 1.15
The Appmethod 1.15 release contains many new and improved features. Highlights are discussed below.
- 1 FireMonkey Changes for 1.15
- 1.1 FireMonkey Multi-Device Applications Support Both Desktop and Mobile Platforms
- 1.2 FireMonkey Uses the New Google Mobile Ads API for Android
- 1.3 New TMultiView Control
- 1.4 Native Presentation of TEdit and TCalendar on iOS
- 1.5 Multi-Monitor Support
- 1.6 Multi-Touch Support and Gestures Changes
- 1.7 Full-Screen Immersive Mode for Android
- 1.8 Size Property and PlatformDefault in TControl
- 1.9 PlatformDefault Setting for TTabPosition on Mobile Apps
- 1.10 FireMonkey Supports the Pull-to-Refresh Feature for TListView on iOS and Android
- 1.11 FireMonkey Save State Feature
- 1.12 Touch-Optimized MetropolisUI Styles Available
- 1.13 DesignVisible Property Was Eliminated
- 1.14 Refactoring of FireMonkey Libraries
- 2 Platform Assistant Changes
- 3 IDE Changes for 1.15
- 3.1 Appmethod Guided Tours
- 3.2 Changes in the Form Designer for Multi-Device Applications
- 3.3 Project Files Are Automatically Added to the Deployment Manager
- 3.4 Entitlement List Added for Android
- 3.5 Splash Screen Support for Android
- 3.6 Git Version Control System Integrated in the IDE
- 3.7 Object Pascal Personality Now Requires SDK for OS X and iOS Simulator
- 3.8 Add Java Libraries to Your Applications for Android from the Project Manager
- 4 Run-Time Library (RTL) Changes for 1.15
- 4.1 RTL API for Bluetooth
- 4.2 App Tethering Supports Classic Bluetooth
- 4.3 App Tethering Supports Connections Outside Your Subnet
- 4.4 Parallel Programming Library
- 4.5 New Unit for Web Encoding and Decoding
- 4.6 XML Improvements
- 4.7 PCRE 8.35 for Windows and Mobile Platforms
- 4.8 zlib 1.2.8
- 5 C++ Compiler Changes for 1.15
- 6 Object Pascal Compiler Changes for 1.15
- 7 Database and Connectivity Changes for 1.15
- 8 Debugger Changes for 1.15
- 9 Application Samples Changes for 1.15
- 10 See Also
FireMonkey Changes for 1.15
FireMonkey Multi-Device Applications Support Both Desktop and Mobile Platforms
You no longer have to choose between creating a desktop application or a mobile application. FireMonkey applications are now called multi-device applications, and by default they support all the available target platforms.
FireMonkey Uses the New Google Mobile Ads API for Android
Previously, FireMonkey used the Google AdMob SDK, which is now deprecated. Google announced that, on August 1, 2014, the Play Store will stop accepting applications built with the Google AdMob SDK. Please update your existing Android apps to use Google Mobile Ads instead of AdMob. See Adding Advertising to Your Mobile Apps.
New TMultiView Control
- The master pane can display a collection of any visual controls, such as edit boxes, labels, lists, and so forth.
- The detail pane typically displays information based on the properties of the controls in the master pane.
For more information about this component and a sample application, see Mobile Tutorial: Using a MultiView Component to Display Alternate Views of Information (iOS and Android).
Native Presentation of TEdit and TCalendar on iOS
- By default, when you add any of these components to the Form Designer, Appmethod uses the styled presentation.
- To use the native presentation on the iOS target platform, set the new TPresentedControl.ControlType property to
For more information, see TPresentedControl.Cont rolType.
Note: The FMX.DateTimeCtrls.TCalendar class has been moved to its own unit, FMX.Calendar. If your pre-existing apps use TCalendar, make sure that FMX.Calendar is in the uses/includes.
If your FireMonkey application runs on multiple monitors, TScreen maintains a list of monitors and their dimensions, and provides methods to obtain the monitor containing a form or a point so that you can effectively manage the layout of your user interface on several active monitors.
Multi-Touch Support and Gestures Changes
- The new FMX.MultiTouch unit contains a TMultiTouchManager.
- The new OnTouch event handles gestures that are purely gestures (never interpreted as mouse events).
- TForm and TControl now have an OnTap event for when the user taps using a finger or similar device (not a mouse).
Full-Screen Immersive Mode for Android
You can enable immersive full-screen mode in your Android 4.4 apps (KitKat). To enable immersive mode, FMX.Forms.TForm.FullScreen must be set to True.
Note that Google Glass apps by definition are immersive full-screen.
Size Property and PlatformDefault in TControl
A new property, Size, has been added to TControl to provide for managing and storing the size of a control. The Size property is an object type (TControlSize) that introduces a new field, PlatformDefault, which is set to True by default. PlatformDefault allows controls to automatically resize themselves to the correct, pre-defined size for the run-time platform. The Width and Height properties of TControl remain, but their values are now saved inside the TControlSize object, instead of as separate width and height fields.
PlatformDefault Setting for TTabPosition on Mobile Apps
The FMX.TabControl.TTabPosition enum contains a new value, PlatformDefault, which sets the tab position according to the default behavior of the target platform, as follows.
- TTabPosition = tpBottom for iOS apps
- TTabPosition = tpTop for Android apps
FireMonkey Supports the Pull-to-Refresh Feature for TListView on iOS and Android
FireMonkey Save State Feature
The new FireMonkey Save State feature allows you to save the state of an application before it closes so this state can be recovered once the application is restarted.
To manage this new feature, the form has a new property called SaveState that handles the saving and recovering of this state. This Save State data can be written to or read from at any time, but ideally, the saving of this state should be during the new OnSaveState event and the recovering of this state should be during the OnCreate event.
The Save State of the form can include information such as active tab, text contained in edit controls, checkbox selection, calendar date, current selected item, etc. along with user data. This feature can be used on mobile platforms as well as on desktop platforms.
For further information about this feature, see FireMonkey Save State.
Touch-Optimized MetropolisUI Styles Available
Four newly updated MetropolisUI styles are available for FireMonkey (
These styles have all the UI elements of mobile apps and are touch-optimized. You can access the styles at C:\Users\Public\Documents\Embarcadero\Studio\15.0\Styles.
DesignVisible Property Was Eliminated
FMX.Controls.TControl.DesignVisible property has been removed. Now the Visible property applies to both run time and design time, and the Structure View always allows access to any component at design time.
Refactoring of FireMonkey Libraries
- FMX.Controls: If you are creating a FireMonkey forms application, the following refactorings should require no code changes on your part, since the FMX.Controls unit is automatically included in FireMonkey forms apps:
- FMX.Edit.TNumberBox class has been moved to its own unit, FMX.NumberBox.TNumberBox. If your pre-existing apps use TNumberBox, make sure that FMX.NumberBox is in the uses/includes.
- FMX.DateTimeCtrls.TCalendar has been moved to its own unit, FMX.Calendar. If your apps use TCalendar, make sure to add FMX.Calendar to the uses/includes.
- MessageDlg, InputQuery, and InputBox have new overloads containing an anonymous method reference. This change removes previous precautions about using these methods in Android apps.
Platform Assistant Changes
Two New Commands in PAServer
v - Toggle verbose mode(verbose mode displays the command-line parameters whenever you issue a command)
r - Reset, terminate all child processes
For more information, see PAServer, the Platform Assistant Server Application.
New PAServer Manager
We have added a new GUI app that runs on the Mac. The PAServer Manager enables you to create and manage multiple PAServer processes for Mac and iOS apps.
For more information, see:
IDE Changes for 1.15
Appmethod Guided Tours
This release includes a new technology to provide Guided Tours to facilitate learning about Appmethod. The Guided Tours consist of a step-by-step walk-through to show specific features and functionality.
These interactive tours display a bubble on each step explaining what you have to do in the step. You must read the instructions and follow all the steps to complete the Guided Tour successfully. You can access a Guided Tour by clicking the appropriate link in the Welcome Page. For further information, see Appmethod Guided Tours .
Changes in the Form Designer for Multi-Device Applications
The new Multi-Device form is a common designer for all platforms (desktop and mobile), with a styled Master form and multiple available views for different form factor and layouts. See Form Designer.
The Designer opens with the default style, the Win32 Master style. The Style drop-down menu allows you to change the Master Form style; you can choose Windows, OS X, iOS and Android. The available components and their properties change depending on the style.
The Master Form is where all the components should be placed and appropriately edited. To design mobile applications, we recommend that you use the steps in the following tutorial: Mobile Tutorial: Using Layout to Adjust Different Form Sizes or Orientations (iOS and Android).
The Views drop-down menu enables you to add predefined forms to your project, such as Android 7 Tablet' or iPhone 4". After selecting an available view, the corresponding form is added to your project folder, and a reference clause to the code page. All the views inherit from the Master Form. See Adding Views to Your Multi-Device Project.
The Views allow you to personalize your project for a specific predefined layout. The available views take into account the display resolution of the target device. If you want to personalize your project for a particular resolution, you can add a customized view. See Adding a Customized View to the View Selector for more information.
When you run your project for a particular target, only the corresponding views are included in your application.
Project Files Are Automatically Added to the Deployment Manager
If you add or remove a file to or from a project using the Project Manager, the Deployment Manager now automatically adds or removes this file. You can add media files, text files or any resource file you want to deploy with your application.
Some files, like database files, require a special treatment because they need database drivers or license files (Featured Files). In this case, the Featured Files dialog box opens automatically so you can choose the necessary files to add to the deployment list.
The Featured Files dialog box includes a new option (Show automatically when required check box) that allows you to disable the automatic adding/deleting of files in the Deployment Manager. If you deactivate this option, Appmethod does not show the Featured Files dialog box automatically anymore; instead, you must open the Featured Files dialog box manually to add or remove featured files.
Entitlement List Added for Android
An Entitlement List page has been added for Android (iOS and Mac OS X already supported the Entitlement List). You can access the Entitlement List through Project > Options > Entitlement List.
You can set entitlements for your Android apps. For example, you can add advertising to your mobile application or allow your application to receive data from remote servers by using the remote push notification support.
See Entitlement List for more information.
Splash Screen Support for Android
You can now configure a splash screen for your Android applications. Select Project > Options > Application, enable your splash screen, enter the path to your splash screen image, and configure the alignment of your splash screen.
For more information, see Splash Images.
Git Version Control System Integrated in the IDE
Appmethod now supports the Git version control system for your version controlled projects, and some new Subversion features have been added in the IDE.
- The History Manager tabs now present integrated Git version control information from your local repository. After you open a project that is under version control by either Git or Subversion, you can find more information in the Contents, Information, and Differences tab.
- Now you can use Git Integration in the IDE to:
- When using Subversion support, now you can:
- Use the new Subversion ChangeList labels to group your changed files before committing them to your remote repository.
- Use the new SVN merge dialog box to start merging your changes from the IDE
- Use the new Subversion switching branches feature to point your local repository changes to a new branch of your remote repository.
For more information, see:
Object Pascal Personality Now Requires SDK for OS X and iOS Simulator
An SDK (Software Development Kit) is required now to develop Object Pascal applications for OS X and iOS.
A software development kit (SDK) provides a set of files to build applications for a target platform, and defines the actual location of those files on the target platform or an intermediate platform that supports the target platform (for example, Mac OS X provides SDKs for iOS).
For steps to add a new Mac OS X or iOS (Device or Simulator) SDK to your development system from a Mac, see Adding a Mac OS X, iOS Device or iOS Simulator SDK.
Add Java Libraries to Your Applications for Android from the Project Manager
In 1.14, to add a custom Java library to your application, you had to create and deploy a
classes.dex file manually.
In 1.15, you can simply add your custom Java libraries from the Project Manager, using the new Libraries node that you can find within the Android platform node. See Adding A Java Library to Your Application Using the Project Manager.
Run-Time Library (RTL) Changes for 1.15
RTL API for Bluetooth
The RTL has a new unit, System.Bluetooth, that provides a multi-device API to access the Bluetooth features of the device that is running your application. This new unit provides support for both Classic Bluetooth and Bluetooth Low Energy. See Using Bluetooth.
App Tethering Supports Classic Bluetooth
App Tethering Supports Connections Outside Your Subnet
In XE6, the methods to discover remote devices to connect, AutoConnect and DiscoverManagers, used to look for devices in the subnet of the local area network (LAN) where the device running your application was. As a result, you could not use app tethering to connect devices in different subnets of the same LAN, or devices with completely different IP addresses.
In 1.15, both of these methods provide an optional parameter, <Target>, that you can use to override this behavior, and specify a target IP address or subnet to search for remote managers. See Connecting to Applications Outside Your Subnet.
Parallel Programming Library
By including the new System.Threading unit in your apps, you can use the new Parallel Programming Library.
New Unit for Web Encoding and Decoding
The RTL provides a new unit, System.NetEncoding, that provides encoding and decoding features for Base64, HTML, and URL.
The following table shows how methods from previous versions of Appmethod map to methods in
Some previously supported methods either support both AnsiString and UnicodeString or only support
AnsiString. The new 1.15 methods support only
UnicodeString. To use the new methods with
AnsiString in 1.15, you must cast your input string and the method result as follows:
AnsiStringResult := AnsiString(NewMethod(string(AnsiStringInput)));
AnsiStringResult = AnsiString(NewMethod(UnicodeString(AnsiStringInput)));
New Cross-Platform XML Vendor that Improves Performance
In addition to MSXML and ADOM, Appmethod provides now a new XML vendor: OmniXML. The OmniXML cross-platform XML vendor shows much better performance results than the alternative cross-platform XML vendor: ADOM. The OmniXML XML vendor in Appmethod is based on OmniXML, but it includes additional features, such as namespace support, and it is compatible with SOAP.
New System to Select XML Vendors
The RTL provides a new system to define the XML vendor to use.
The new XML vendor selection system provides MSXML as the default XML vendor. MSXML only supports the Windows platform; if you do not specify a different XML vendor, your application does not have XML support in platforms other than Windows, and you see a run-time exception when you run your application in other platforms.
To choose a different XML vendor, add a reference to the unit of the vendor into the unit where you use the RTL XML features, such as the TXMLDocument class. If you add more than one XML vendor unit, the first unit referenced is used as XML vendor. To override this behavior, you can change the value of the DefaultDOMVendor global variable to the global variable of the target XML vendor.
- Note: You can look up the unit and the global variable of each XML vendor in the List of Built-in XML Vendors.
When you use the TXMLDocument component, you can choose an XML vendor using its DOMVendor property. When you change the value of DOMVendor, the unit that uses the component is configured to use the specified XML vendor, so that you do not need to change unit references or the DefaultDOMVendor global variable manually.
To use a different XML vendor for each platform (e.g. MSXML in Windows and OmniXML in other platforms), use conditional compilation:
PCRE 8.35 for Windows and Mobile Platforms
The PCRE library, which provides support for Perl-compatible regular expressions, has been upgraded in 1.15:
Mac OS X
These platforms use the PCRE version available in the system.
- To check the changes since previous versions of PCRE, see the official changelog.
- To use PCRE, see the documentation of the System.RegularExpressions unit.
PCRE 8.35 Does Not Accept Group Names Starting with Digits
In XE6, you could define named groups with names that contained any combination of digits and letters, such as "1" or "2nd". For example: "(?<1>\w+)\s+(?<2>fish)\s*".
In 1.15, which includes the latest version of the PCRE library, it is no longer possible to use group names that start with a digit. That is, you cannot use group names such as "1" or "2nd" anymore. However, you can still use digits in the name as long as they are not the first character of the name, such as "g1" or "my2cents".
Appmethod includes a new version of the zlib compression library: 1.2.8.
- To check the changes since zlib 1.2.7, see the official changelog.
- To use zlib, see the documentation of the System.ZLib unit.
C++ Compiler Changes for 1.15
New Versions of Boost and Dinkumware Libraries for Win64
New versions of Boost and Dinkumware libraries are now installed (both are for Win64 only).
- Dinkumware 6.40 for Win64
- Boost 1.55 for Win64
- See Boost Libraries.
New iOS Headers Added (libcplusplus)
The libcplusplus iOS headers are now being used in Appmethod. These updated headers provide more C++11 features, such as atomics, and default initialization of vectors.
Appmethod now supports the Navigate To command, which was added to the Find (C++) commands available on the context menu in the Code Editor. The Navigate To command searches the entire active project for identifiers and constants that meet the specified search criteria. For more information, see:
Delphi Packages No Longer Allow Namespace Selection in Output - C/C++ Options
For C++ Output file generation, options are different for Delphi packages vs. executables. For packages, there are two choices (instead of 11 for .exe files):
- Generate DCUs (when you do not plan to use the package from C++)
- Generate all Appmethod C++ files (including package libs)
This change eliminates potential namespace issues when the Delphi package is used in C++ applications.
Object Pascal Compiler Changes for 1.15
String-Like Operations Supported on Dynamic Arrays
- Dynamic arrays can be added as you would add strings.
A: array of integer; A:=[1,2,3]; A:=A+[4,5]; //A will become [1,2,3,4,5] var B: TBytes = [1,2,3,4]; //Initialization can be done from declaration
- The Insert function inserts a dynamic array at the beginning at the position index. It returns the modified array.
insert(newEntry, A, index); // insert new element or array into A at position index A: array of integer; A:=[1,2,3,4]; insert(5,A,2); // A will become [1,2,5,3,4]
- The Delete function eliminates elements from a dynamic array and returns the modifed array:
Delete(A,index,noElem); //deletes noElem elements from A starting at index A: array of integer; A:=[1,2,3,4]; Delete(A,1,2); //A will become [1,4]
- The Concat function can be used to put together two different dynamic arrays:
A := Concat([1,2,3],[4,5,6]); //A will become [1,2,3,4,5,6]
Database and Connectivity Changes for 1.15
Enterprise Mobility Service
The new Enterprise Mobility Service (EMS) offers a Mobile Enterprise Application Platform that can be hosted in the Cloud or on premises, and exposes custom REST APIs and enterprise database data.
EMS is developed to offer the customers a comprehensive solution that includes a REST API Server, remote database access, and tracking the usage of the solution. The EMS database stores the activity of the devices and users, and the EMS Server creates analytics of this information.
The main components in the EMS architecture are:
- The EMS Server is the component that provides core functions and services for the EMS Clients. The EMS Server manages the EMS database that stores information such as registered users, devices, and the activity of your application (creating the analytics).
- The REST API is used to access the EMS database data. EMS Clients can access the information in the EMS database by making calls to the REST built-in Administrative API of the EMS Server. You can extend the functionality of the existing EMS Server by creating your own EMS Packages or FireDAC EMS Packages, and registering these resources in the EMS Server.
- EMS Clients are mobile or desktop applications that can access the EMS Server registered resources by using the REST API. EMS support for FireDAC is provided, so you can create EMS FireDAC Client Applications.
- EMS Console reads the information that is stored in the EMS Database and shows in your default browser. The EMS Console displays the list of Users, Devices, and Groups, and shows graphs of analytics that are stored in the EMS database.
New components have been added for EMS in the IDE, such as REST.Backend.EMSProvider.TEMSProvider or REST.Backend.EMSFireDAC.TEMSFireDACClient (to support FireDAC in your client application). You can also use existing BaaS Components, such as TBackendQuery, in your EMS Client applications.
Parse Provider Support for Your Android Push Notification Applications
Appmethod REST BaaS framework now supports Parse BaaS as a provider for your Android Push Notification applications. Previously, you could use the Parse provider only for Appmethod iOS apps.
To start receiving push notifications from the Parse BaaS provider, register your Appmethod application as an Android Parse push notification client and configure your Parse cloud service.
For more information, see Mobile Tutorial: Using Remote Notifications (iOS and Android) and Creating the Android Push Application.
- FireDAC streaming support for blob parameters and support for MSSQL file streams
- New IBLite driver for desktop and mobile, based on existing IB driver
- New DriverID = 'IBLite'
- New TFDPhysIBDriverLink.Lite property
- Support for DBMS API command native timeouts
- Supported by FireDAC drivers: Advantage, Informix, and SQL Server
- FireDAC connection parameters are now displayed in the Object Inspector as records.
- TFDConnection.Params is now of TFDConnectionDefParams base class.
- Depending on TFDConnection.DriverName, the params are of one of the TFDPhysXxxConnectionDefParams, where Xxx is driver ID.
- Data Explorer enhancements .
- Primary keys and fields are displayed.
- Foreign keys and fields are displayed.
- Sequences/generators are now displayed.
- Metadata writing capabilities
- New TFDTable.CreateTable method
- New poCreateDest option of TFDBatchMove.Options
- New IFDPhysCommandGenerator.GenerateCreateTable, GenerateDropTable methods
- New TFDBatchMove component for copying tables data and metadata between different databases:
- New components: TFDBatchMove, TFDBatchMoveTextReader, TFDBatchMoveTextWriter, TFDBatchMoveDataSetReader, TFDBatchMoveDataSetWriter, TFDBatchMoveSQLReader, and TFDBatchMoveSQLWriter.
- Old component TFDDataMove is deprecated now. Use TFDBatchMove instead of TFDDataMove .
- TFDScript, TFDBatchMove along with reader and writer components, TFDDataMove are moved to the new "FireDAC ETL" page.
- TFDCustomSchemaAdapter serialization:
Enhancements to the Data Explorer
The Data Explorer now displays these nodes for FireDAC applications:
- Primary keys and their fields
- Foreign keys and their fields
Debugger Changes for 1.15
New PAServer Manager App on the Mac
The new Mac GUI app PAServer Manager is now delivered with PAServer (the Platform Assistant Server). PAServer Manager enables you to create and manage multiple instances of PAServer.
For more information, see:
MultiByte Support for Mobile Debuggers
- The debuggers for the mobile platforms (iOS and Android) now support the use of Unicode characters and strings with UTF8, UTF16 or UTF32 encodings.
- In file names of iOS apps, the debuggers now support the use of international characters (Unicode, such as hélène and éléments).
Binary info.plist File Deployed
The info.plist file, which is required for Mac and iOS apps, continues to be generated as an XML file containing keys and associated values. For deployment, however, the XML file is now converted to binary. See Version Info for information about the contents of the info.plist file.
Application Samples Changes for 1.15
The application samples delivered with the product have been reorganized, and some of the application samples are no longer delivered. We deliver the newer samples that are more relevant to multi-device application development, but we removed older samples that are less relevant. The removed samples will be made available in a separate SourceForge repository after the 1.15 release.
For more information about the application samples delivered with the product, see: Category:Sample