Nouveautés de 1.16

De Appmethod Topics
Aller à : navigation, rechercher

Remonter à Nouveautés des releases précédentes


Les releases 1.16, 1.16 Subscription Update 1 et 1.16 General Update 1 comportent des fonctionnalités nouvelles ainsi que des améliorations.

Sommaire

Nouveautés de 1.16 Mise à jour 1

Consultez les listes ci-dessous pour voir les différentes fonctionnalités incluses dans 1.16 Subscription Update 1 et dans 1.16 General Update 1.

  • Subscription Update 1 est destiné aux clients abonnés aux mises à jour.
  • General Update 1 est destiné aux clients 1.16 ne disposant pas d'un abonnement aux mises à jour.

Vous pouvez consulter des informations complémentaires sur les abonnements aux mises à jour (EN).

Nouveautés de 1.16 Subscription Update 1

Subscription Update 1 est destiné aux clients abonnés aux mises à jour.

  • Nouvelles fonctionnalités :
  • Corrections particulières :
  • Renforcement de la robustesse des fonctionnalités de productivité de l'EDI
  • Améliorations des prévisualisations multi-périphériques
  • Nombreuses corrections supplémentaires. Veuillez vous reporter au site EDN pour une liste détaillée des corrections (EN).

Nouveautés de 1.16 General Update 1

General Update 1 est destiné aux clients XE8 ne disposant pas d'un abonnement aux mises à jour.

  • Nouvelles fonctionnalités :
  • [[#Nouvelle barre d'outils Communauté Embarcadero|Barre d'outils Communauté]]
  • Correction relative au simulateur iOS 8
  • Ajout de fichiers manquants dans la livraison originale de 1.16

Fonctionnalités de 1.16 Mise à jour 1

Modifications relatives à l'utilitaire graphique

Le nom de la fenêtre GetIt ainsi que le nom de Gestionnaire de packages GetIt dans le menu Outils ont été mis à jour dans le Gestionnaire de packages GetIt.

GetIt compte désormais trois nouvelles options de filtrage : Gratuit, Achat et Acheté. Apprenez-en plus sur ces options dans la Fenêtre principale du Gestionnaire de packages GetIt.

Modifications relatives aux bases de données

Dans 1.16, la propriété Unidirectional est synchronisée avec la propriété en lecture seule IsUniDirectional.

Changez la valeur de la propriété Unidirectional de votre TFDQuery ou de votre TFDTable pour convertir vos ensembles de données FireDAC en ensembles de données unidirectionnels.

Modifications relatives à l'EDI

La nouvelle barre d'outils [[Barre d'outils Communauté Embarcadero|Communauté Embarcadero]] permet de se connecter aisément à la communauté sociale Embarcadero (EN). La barre d'outils figure dans le coin supérieur droit de l'EDI.

Accédez à Voir > Barres d'outils > Communauté Embarcadero pour afficher la barre d'outils ou la masquer.

Pour plus d'informations, voir [[Barre d'outils Communauté Embarcadero|Barre d'outils Communauté Embarcadero]].

La Page d'accueil inclut une section Projets favoris. Vous pouvez ajouter vos projets favoris à cette section. Visitez Projets favoris accessibles depuis la page d'accueil pour savoir comment ajouter ou retirer vos projets favoris.

Modifications relatives à FireMonkey pour 1.16

FireMonkeyest notre bibliothèque propriétaire de programmation orientée objet (classes, méthodes, propriétés, etc.).

Présentation native de TListView, TSwitch, TMemo, TCalendar, TMultiView et TEdit sur iOS

Sur la plate-forme cible iOS, FireMonkey prend désormais en charge les présentations stylées et natives pour les contrôles TListView, TSwitch, TMemo, TCalendar, TMultiView et TEdit.

  • Par défaut, lorsque vous ajoutez l'un de ces composants au Concepteur de fiches, Appmethod utilise la présentation Styled.
  • Pour utiliser la présentation native sur la plate-forme cible iOS, définissez la nouvelle propriété ControlType sur Platform.

Pour plus d'informations, voir TPresentedControl.ControlType, TListViewBase.ControlType et Contrôles iOS natifs de FireMonkey.

Interopérabilité améliorée entre la plate-forme et les contrôles stylés

La propriété ControlType est désormais disponible pour plusieurs contrôles qui n'ont pas encore une présentation iOS native.

Navigateurs Web de bureau

FireMonkey prend maintenant en charge le composant TWebBrowser sur les plates-formes de bureau (Windows et Mac OS X). Auparavant, TWebBrowser prenait en charge les plates-formes mobiles (Android et iOS). Toutes les fonctions basiques du navigateur Web sont disponibles (comme naviguer vers l'URL, revenir à la page précédente, passer à la page suivante, et ainsi de suite). Pour plus d'informations, voir Tutoriel mobile : Utilisation du composant Navigateur Web (iOS et Android).

Cartes interactives

Sur les plates-formes mobiles (Android et iOS), FireMonkey prend en charge le composant TMapView qui ajoute des cartes interactives à vos applications mobiles. Les fonctionnalités élémentaires de ce composant sont les suivantes :

  • Quatre types de cartes : Normal, Satellite, Hybrid et (pour Android seulement) Terrain.
  • Contrôle des mouvements : contrôles des mouvements d'inclinaison intuitive, de rotation et de zoom.
  • Contrôle de la vue Carte : capacité de contrôler les propriétés de la carte comme les coordonnées du centre de la carte, l'orientation de la carte et ainsi de suite.
  • Marqueurs personnalisés : capacité d'ajouter des marqueurs aux cartes.

IMPORTANT : Pour utiliser TMapView dans une app Android, vous devez préalablement obtenir une clé d'API Google Maps. En l'absence d'une clé d'API valide, une erreur d'exécution se produit. Pour des détails sur l'obtention de la clé d'API Google Maps, voir Configuration des applications Android pour utiliser Google Maps.

Pour plus d'informations et des exemples, voir Tutoriel mobile : Utilisation d'un composant Carte pour travailler avec des cartes (iOS et Android).

Nouvelles options pour la bibliothèque multimédia

FireMonkey fournit désormais une option pour enregistrer les photos prises par la caméra d'un périphérique dans la bibliothèque de photos de ce périphérique.
Si votre application gère les photos en utilisant les actions FireMonkey ou l'interface IFMXCameraService, vous pouvez utiliser la propriété TCustomTakePhotoAction.NeedSaveToAlbum ou un paramètre du type TParamsPhotoQuery pour que votre application enregistre automatiquement les photos dans la bibliothèque de photos du périphérique.
En outre, FireMonkey fournit l'interface IFMXPhotoLibrary qui vous permet d'enregistrer une image bitmap dans la bibliothèque de photos du périphérique.

Pour de plus amples informations et les exemples de code, voir :

Actions standard pour TMediaPlayer

FireMonkey fournit désormais les actions standard suivantes que vous pouvez utiliser pour contrôler toutes les instances de TMediaPlayer :

Aperçu du positionneur de fiches

Un positionneur de fiches est désormais disponible dans les projets FireMonkey. Le positionneur de fiches vous permet de positionner les fiches les unes par rapport aux autres, au fur et à mesure de la conception de votre application. Situé dans le coin inférieur droit du Concepteur, le positionneur de fiches montre le positionnement de votre fiche telle qu'elle apparaîtra à l'écran lors de l'exécution.

InputQuery prend désormais en charge le masquage des champs d'entrée

InputQuery vous permet désormais de marquer les champs comme masqués de manière à ce que les données d'entrée soient visuellement masquées sur l'écran. Pour marquer un champ comme masqué, dans un appel à InputQuery préfixez le nom du champ avec :

  • Modèle:Object Pascal : "#1". Par exemple, à la place du nom de champ 'Password', utilisez le nom de champ #1'Password'.
  • C++ : "\1". Par exemple, à la place du nom de champ "Password", utilisez le nom de champ "\1Password".

AppAnalytics dans FireMonkey

FireMonkey prend désormais en charge AppAnalytics, ce qui vous permet de suivre l'usage des données de votre application. Vous devez uniquement déposer un composant TAppAnalytics dans votre application et définir certaines options du composant. Dès que TAppAnalytics est actif, l'usage des données est disponible en quelques minutes dans l'interface Web AppAnalytics.

  • AppAnalytics est entièrement anonyme et ne collecte pas ni ne transmet les informations privées ou d'identification personnelle.

Personnalisation des notifications locales

Sons de notification personnalisés

Vous pouvez définir un son de notification personnalisé en paramétrant la valeur du champ SoundName. Pour plus d'informations, voir Tutoriel mobile : Utilisation des notifications (iOS et Android).

Répétition des notifications

Répétez une notification programmée au fil du temps en définissant la valeur de la propriété RepeatInterval. Pour plus d'informations, voir Tutoriel mobile : Utilisation des notifications (iOS et Android).

La vue Android utilisée à l'exécution dépend des dimensions du périphérique cible

Les deux tableaux suivants décrivent respectivement l'algorithme utilisé pour choisir la vue Android adaptée à l'exécution, et la plage des tailles de périphériques Android appropriées pour chaque vue :

Enregistrement d'images dans l'album photo du périphérique

FireMonkey inclut désormais l'interface IFMXPhotoLibrary pour enregistrer des images dans l'album photo du système :

Pour plus d'informations sur la procédure d'enregistrement des images dans l'album photo du périphérique, consultez MediaLibrary.IFMXPhotoLibrary et IFMXPhotoLibrary.AddImageToSavedPhotosAlbum.

TImageList introduit les listes d'images en tant que collections centralisées d'images

FireMonkey fournit maintenant des listes d'images via un nouveau composant, FMX.ImgList.TImageList. Les listes d'images procurent des outils complets pour l'utilisation de collections centralisées de petites images par les éléments de l'interface utilisateur graphique (contrôles, menus, etc.) dans vos applications FireMonkey.

Chaque image d'une liste est composée de plusieurs bitmaps multi-résolutions pour garantir que les images sont correctement affichées sur des périphériques ayant des résolutions et des densités d'écran variées. L'éditeur de listes d'images vous permet de préparer et de modifier des listes d'images FireMonkey.

Pour plus d'informations, voir Utilisation des listes d'images de TImageList en tant que collections centralisées d'images et Exemple FMX.ImageList.

Modifications et nouveautés dans l'API FireMonkey

Nouvel événement OnFilter

FireMonkey fournit le nouvel événement OnFilter pour définir des filtres personnalisés dans une zone de recherche.

Pour plus d'informations sur le nouvel événement OnFilter, consultez TListViewBase.OnFilter et TSearchBoxModel.OnFilter.

Définition d'un paramètre de capture de qualité personnalisé pour votre caméra

TVideoCaptureQuality a la nouvelle valeur CaptureSettings pour définir un paramètre de capture de qualité personnalisé pour votre caméra.

Nouvelle classe TBoundingBox

TBoundingBox est une nouvelle classe, similaire à TRectF mais pour une utilisation en 3D. Elle définit un type d'enregistrement qui stocke les sommets (EN) maximal et minimal décrivant une zone.

Plusieurs constructeurs permettent de créer un TBoundingBox en se basant sur une origine, un nuage de points, des coordonnées ou un TBoundingBox existant. Cette classe fournit également d'autres méthodes parmi lesquelles on peut citer GetSize, Inflate, IntersectsWith, Contains, et Normalize.

Propriété PullRefreshWait pour la vue liste native iOS

La nouvelle propriété PullRefreshWait permet de définir si l'indicateur d'incrémentation animé, qui s'affiche lorsque PullToRefresh est égal à True, disparaît automatiquement.

Si vous définissez PullRefreshWait sur True, vous devez appeler la méthode StopPullRefresh pour masquer l'indicateur d'incrémentation animé lorsque cela est nécessaire.

La propriété PullRefreshWait s'applique aux contrôles iOS natifs uniquement.

Modifications relatives à la bibliothèque d'exécution (RTL) pour 1.16

Nouvelle API de client HTTP

La RTL fournit plusieurs nouvelles unités réseau avec des membres qui vous permettent de créer un client HTTP, d'envoyer des requêtes vers des serveurs HTTP et de gérer leurs réponses.

Utilisation d'un client HTTP explique comment utiliser les deux nouveaux composants HTTP, TNetHTTPClient et TNetHTTPRequest pour gérer les requêtes HTTP. Voir également les principales classes de client HTTP :

  • THTTPClient, qui représente un client HTTP.
  • THTTPRequest, qui représente une requête de votre client à un serveur.
  • THTTPResponse, qui représente la réponse du serveur à une requête de votre client.

Prise en charge des beacons

La RTL prend maintenant en charge l'utilisation des beacons (balises). Un beacon est un périphérique Bluetooth Low Energy. Il intègre dans ses données publicitaires des données spécifiques au fabricant ("Manufacturer Specific Data"), ce qui permet à tout périphérique recevant ces informations d'identifier le périphérique beacon et de calculer la distance qui les sépare, sans qu'il soit nécessaire de les appairer ou de les connecter.

Deux formats de beacon sont pris en charge :

  • iBeacon (EN) - le format défini par Apple
  • AltBeacon (EN) - un format ouvert, connu sous le nom de beacon alternatif, qui prend en charge Android et iOS

Utilisation des beacons explique comment implémenter une application beacon.

Nouveau composant Classic Bluetooth

L'unité System.Bluetooth.Components fournit désormais un nouveau composant : TBluetooth. Ce nouveau composant vous permet d'utiliser Classic Bluetooth sur vos applications en utilisant une approche basée sur les composants.

Voir Utilisation du protocole Classic Bluetooth pour apprendre à utiliser ce nouveau composant.

Nouvelle API pour les fonctions de hachage

La RTL a une nouvelle unité, System.Hash. Cette unité inclut les classes et les méthodes qui vous permettent d'utiliser les fonctions de hachage suivantes dans vos applications :

Nouveaux types de données Object Pascal : FixedInt et FixedUInt

Deux nouveaux types entiers 32 bits indépendants de la plate-forme ont été introduits dans 1.16 :

FixedInt et FixedUInt garantissent la portabilité, une meilleure intégration et l'interopérabilité avec les plates-formes 32 bits et 64 bits. Ces deux nouveaux types assurent la prise en charge inter-langage entre Modèle:Object Pascal et C++ pour vos applications.

La taille de FixedInt et FixedUInt est de 32 bits sur toutes les plates-formes 32 bits et 64 bits (iOS 64 bits, Windows 64 bits, Windows 32 bits, OSX32, iOS 32 bits et Android). Le tableau suivant présente les types équivalents entre les différentes plates-formes.

Types équivalents dans d'autres plates-formes
Plates-formes Windows
(Windows 32 bits et 64 bits)
Plates-formes OSX32 et Android, et
plates-formes iOS (iOS 32 bits et 64 bits)
FixedInt LongInt Integer

FixedUInt

LongWord Cardinal

Pour de plus amples informations, voir :

Modification de la taille de LongInt et LongWord pour les plates-formes iOS 64 bits

LongInt et LongWord sont désormais des types entiers dépendants de la plate-forme.

Sur les plates-formes iOS 64 bits, les types LongInt et LongWord doublent la taille qui est prise en charge sur les plates-formes 32 bits (Windows 32 bits, OSX32, iOS 32 bits et Android) et sur les plates-formes Windows 64 bits, comme suit :

Taille
Plates-formes Windows 32 bits et 64 bits Plates-formes iOS 64 bits
LongInt 32 bits (4 octets) 64 bits (8 octets)

LongWord

32 bits (4 octets) 64 bits (8 octets)

Pour plus d'informations, voir Types entiers dépendants de la plate-forme.

Bibliothèque de programmation asynchrone

La RTL prend en charge la programmation asynchrone dans TComponent.

Pour plus d'informations, voir Utilisation de la bibliothèque de programmation asynchrone.


Modifications relatives à Modèle:Object Pascal pour 1.16

DCCIOSARM64.EXE : nouveau compilateur pour périphérique iOS 64 bits

Le compilateur DCCIOSARM64.EXE est un nouveau compilateur NEXTGEN qui prend en charge le développement des apps iOS 64 bits.

Notez que l'App Store exige désormais que vos apps iOS 32 bits prennent également en charge les périphériques iOS 64 bits. Pour plus d'informations, voir Nouvelle option du compilateur pour la construction de fichiers binaires iOS prenant en charge iOS 32 bits et 64 bits.

Apps iOS universelles : DCCIOSARM64 prend en charge une nouvelle option sur la page Compilation de Options de projet : Générer le fichier binaire universel iOS (armv7 + arm64).
La définition de cette option sur True génère une app iOS universelle qui s'exécute sur les périphériques iOS 32 bits et 64 bits. Cette option est uniquement disponible lorsque la plate-forme cible est Périphérique iOS 64 bits.

Voir aussi Compilation conditionnelle (Object Pascal).

Deux nouveaux types de données : FixedInt et FixedUInt

Pour des détails, voir Nouveaux types de données Object Pascal : FixedInt et FixedUInt.

Modifications relatives à C++ pour 1.16

BCCIOSARM64.EXE: nouveau compilateur amélioré par Clang pour périphérique iOS 64 bits

Nous avons ajouté un nouveau compilateur qui produit des applications iOS 64 bits : BCCIOSARM64.EXE, le compilateur C++ pour le périphérique iOS 64 bits.

Notez que l'App Store exige désormais que vos apps iOS 32 bits prennent également en charge les périphériques iOS 64 bits. Appmethod comprend une option permettant de créer une app iOS 32 bits/64 bits universelle. Pour plus d'informations, voir Nouvelle option du compilateur pour la construction de fichiers binaires iOS prenant en charge iOS 32 bits et 64 bits.

BCCIOSARM64 prend en charge la nouvelle macro prédéfinie __arm64__. Pour écrire du code spécifique à la plate-forme cible iOS 64 bits, vous pouvez utiliser :

#if defined (__arm64__)
 ...
#endif

Pour écrire du code spécifique à x64 (iOS et Windows), vous pouvez utiliser :

#if defined(__clang__) && (__POINTER_WIDTH__ == 64)
...
#endif

Pour plus d'informations, voir Macros prédéfinies.

Les noms entièrement qualifiés sont désormais requis lors de l'inclusion des packages d'exécution

Lors de la construction d'une application C++ VCL ou FireMonkey, l'EDI effectue une analyse des packages, c'est-à-dire qu'il évalue les packages requis/utilisés par l'application à partir des en-têtes inclus. Avant 1.16, l'EDI utilisait le nom de base lors de la correspondance des en-têtes aux packages. Par exemple, en voyant qu'une application incluait SysUtils.hpp, l'EDI en déduisait que l'application utilisait le package rtl. De même, #include ActnCtrls.hpp signifie que l'application utilisait le package vcl.

Néanmoins, l'utilisation du nom de base a des inconvénients. Une application incluant un en-tête nommé About.h|hpp pourrait présumer à tort la nécessité du package FireDac UI, car celui-ci contient une unité nommée FireDAC.VCLUI.About.hpp. De même, l'inclusion de assert.h pourrait provoquer un déclenchement par l'EDI de la liaison au package DUnitXRuntime (il contient une unité nommée DUnitX.Assert).

Nom qualifié correspondant uniquement

A partir de 1.16, l'EDI considère désormais qu'un package est requis uniquement lorsqu'il existe une instruction #include pour le nom qualifié/complet d'une unité de ce package. Ce qui signifie qu'en voyant #include <XMLDoc.hpp>, l'EDI ne considère pas que le package Xml est requis. L'EDI inclut uniquement le package xmlrtl si vous spécifiez le nom entièrement qualifié : #include <Xml.XMLDoc.hpp>.

Cette modification affecte uniquement les nouveaux projets

La modification s'applique aux nouveaux projets, ou lorsqu'un projet existant commence à utiliser un package qu'il n'avait jamais utilisé auparavant. Cette modification n'affecte pas les projets existants, car leurs exigences en matière de packages ont déjà été évaluées et enregistrées dans le fichier projet (<nom_projet>.cbproj).

Nouvelles macros définies

Pour vous aider à surveiller votre utilisation des noms de packages entièrement qualifiés, les deux nouvelles macros suivantes ont été définies :

  • WARN_LEGACY_HEADER_USAGE - Génère un avertissement lorsqu'un en-tête non qualifié est inclus
  • ERROR_LEGACY_HEADER_USAGE - Génère une erreur lorsqu'un en-tête non qualifié est inclus

Si vous ajoutez #define WARN_LEGACY_HEADER_USAGE et que vous entrez ensuite #include <SysUtils.hpp>, l'avertissement suivant apparaît après la prochaine construction :

 Include <System.SysUtils.hpp> instead

Si vous ajoutez #define ERROR_LEGACY_HEADER_USAGE et que vous entrez ensuite #include <SysUtils.hpp>, le message d'erreur suivant apparaît après la prochaine construction :

 Fatal F1003 $BDS\include\windows\rtl\SysUtils.hpp 8: Error directive: Include 'System.SysUtils.hpp' instead
  *** 1 errors in Compile ***

Tableaux DynamicArray : la construction et l'initialisation sont désormais plus conviviales

Auparavant, vous deviez définir la longueur d'un DynamicArray avant d'ajouter les éléments, comme ceci :

  DynamicArray<int> test;
  test.Length = 3;
  test[0] = 1;
  test[1] = 2;
  test[2] = 3;

Maintenant, vous pouvez simultanément initialiser et construire un tableau dynamique lorsque vous utilisez l'un des compilateurs C++ améliorés par Clang:

  DynamicArray<int> test = {0, 1, 2};

Pour BCC32, vous pouvez initialiser et construire le tableau comme suit :

 DynamicArray<int> test(0, 1, 2);

La nouvelle syntaxe a été implémentée en utilisant C++11 std::initializer_list.

Nouvelles fiches

En utilisant un tableau C++ simple :

    // template <size_t SIZE> System::DynamicArray(T(&array)[SIZE]);
    int values[] = { 1, 2, 3, 4, 5 };
    System::DynamicArray<int> h(values);

Liste d'initialiseurs C++11 :

    // System::DynamicArray(std::initializer_list<T> il);
    System::DynamicArray<char> ArrayOfChars('a', 'b', 'c');
    System::DynamicArray<int> ArrayOfInts(0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
                                        10, 11, 12, 13, 14, 15, 16, 17, 18);

Constructeur basé sur un modèle variadic C++11 :

    // template <class... Types> System::DynamicArray(const T &t, Types && ...values);
    System::DynamicArray<char> c('a'); // t='a', ...values=<>
    System::DynamicArray<char> d('a', 'b', 'c'); // t='a', ...values=<'b', 'c'>

Etant donné que BCC32 ne prend pas en charge l'initialisation uniforme C++11, nous avons ajouté des surcharges de constructeur pour 2 à 19 paramètres :

    // System::DynamicArray(const T &t0,  const T &t1,  const T &t2);
    System::DynamicArray<char> f('a', 'b', 'c');
    // System::DynamicArray(const T &t0,  const T &t1,  const T &t2,  const T &t3,
    //                      const T &t4,  const T &t5,  const T &t6,  const T &t7,
    //                      const T &t8,  const T &t9,  const T &t10, const T &t11,
    //                      const T &t12, const T &t13, const T &t14, const T &t15,
    //                      const T &t16, const T &t17, const T &t18);
    System::DynamicArray<int> g( 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
                                10, 11, 12, 13, 14, 15, 16, 17, 18);

Pour plus d'informations, voir Types structurés.

SetApplicationMainFormOnTaskBar a été retirée de Vcl.Forms.hpp

Pour plus de détails, voir Modifications relatives à la VCL pour 1.16.

Boost désormais disponible hors de l'installateur

Les bibliothèques Boost ne font plus partie de l'installateur du produit. Vous pouvez facilement obtenir Boost en sélectionnant Outils > GetIt pour ouvrir la fenêtre principale de GetIt, puis en choisissant d'installer Boost à partir de GetIt.

Pour les autres façons d'installer (ou de désinstaller) Boost, voir Boost.

Nouvelles procédures de gestion des méthodes anonymes Object Pascal

Nous avons mis à jour la procédure recommandée pour la gestion des méthodes anonymes Object Pascal dans vos applications C++. La description révisée, dans Comment gérer les méthodes anonymes Object Pascal dans C++, utilise un Functor (objet fonction) ou une expression Lambda. Voir les exemples de code sur la page.

Opérateur d'assignation C++ en tant qu'opérateur implicite Object Pascal

En C++, il est possible d'utiliser operator= pour l'assignation du type de résultat, exactement comme l'opérateur implicite utilisé en Object Pascal.

Prenons, par exemple, la variable myVar avec le type TValue ; en Object Pascal, il est possible d'assigner des types différents à cette variable en procédant comme suit :

a := 'assigning a string';
a := 123;
a := 3.14;

Auparavant, en C++, sans l'opérateur d'assignation, vous auriez dû l'écrire ainsi :

a = TValue::_op_Implicit(UnicodeString(L"assigning a string"));
a = TValue::_op_Implicit(123);
a = TValue::_op_Implicit(3.14L);

Désormais, en C++, avec l'opérateur d'assignation, vous pouvez l'écrire ainsi :

a = UnicodeString(L"assigning a string");
a = 123;
a = 3.14L;

Pour plus de détails, voir Opérateur d'assignation C++ en tant qu'opérateur implicite Object Pascal.

Modifications relatives à l'EDI pour 1.16

Nouvelle plate-forme cible : Périphérique iOS - 64 bits

Pour créer une app pour la nouvelle plate-forme Périphérique iOS - 64 bits :

Aperçu multi-périphérique

Avec le nouvel aperçu multi-périphérique, vous pouvez obtenir un aperçu de l'aspect de votre application sur différents périphériques. La fonctionnalité Aperçu multi-périphérique procure un aperçu de la zone de conception sur différents périphériques. Vous pouvez sélectionner les périphériques à utiliser pour l'aperçu.

MDPreviewWindow1.png

Pour ouvrir la fenêtre Aperçu multi-périphérique, choisissez Voir > Aperçu multi-périphérique.

Pour plus d'informations sur cette fonctionnalité, voir Aperçu multi-périphérique.

Gestionnaire de périphériques

Le Gestionnaire de périphériques affiche une grille avec les périphériques prédéfinis disponibles. Les périphériques prédéfinis sont une liste de périphériques disponibles à la conception, par exemple dans la fenêtre Aperçu multi-périphérique.

Pour ouvrir le Gestionnaire de projets, choisissez Outils > Options > Options d'environnement > Concepteur de fiches > Gestionnaire de périphériques.

DeviceManager.png

Le Gestionnaire de périphériques vous permet d'ajouter, de modifier et de supprimer un périphérique prédéfini en utilisant la fenêtre Paramètres du périphérique.

Les périphériques prédéfinis peuvent également être utilisés comme vues de votre projet multi-périphérique si la vue a été recensée en installant le package associé.

Le Gestionnaire de périphériques gère le fichier DevicePresets.xml.

Remarque : Dans 1.16, le fichier MobileDevices.xml a été renommé DevicePresets.xml.

Exécuter vos apps sur n'importe quel simulateur iOS

Le noeud Cible du noeud de plate-forme Simulateur iOS dans le Gestionnaire de projets affiche à présent la liste complète des simulateurs pris en charge par l'installation Xcode sur votre Mac. Le Gestionnaire de projets indique également la version d'iOS de chaque simulateur ; vous pouvez d'ailleurs exécuter vos applications sur un modèle de périphérique donné exécutant l'une quelconque des versions d'iOS prises en charge.

Fichier:1.16iOSSimulatorTarget.png

Ajouter des fichiers spécifiques s'ouvre automatiquement quand cela est nécessaire

Lorsque vous ajoutez au Gestionnaire de projets un fichier susceptible de vous obliger à ajouter un certain nombre de fichiers spécifiques à la configuration de déploiement de votre projet, Appmethod ouvre une vue filtrée de la boîte de dialogue Ajouter des fichiers spécifiques pour vous permettre d'inclure les fichiers spécifiques requis dans la configuration de déploiement de votre projet. Voir Liste filtrée Ajouter des fichiers spécifiques pour plus d'informations.

Désactivation des bibliothèques Java Appmethod intégrées pour Android à l'aide du Gestionnaire de projets

Dans 1.16, le Gestionnaire de projets liste les bibliothèques Java Appmethod intégrées pour Android, et vous pouvez désactiver l'une quelconque de ces bibliothèques. Pour alléger la taille de l'application, vous pouvez désactiver les bibliothèques Java qui ne sont pas nécessaires à son fonctionnement. Pour plus d'informations, voir Utilisation des bibliothèques Java Appmethod intégrées pour Android.

Fichier:1.16DisableJavaLibrary.png

Dans 1.15, le Gestionnaire de projets vous permettait d'ajouter aisément des bibliothèques Java personnalisées à vos applications Android. Cependant, pour supprimer des bibliothèques Java que Appmethod intègre par défaut aux applications Android et qui sont devenues inutiles, vous deviez créer et déployer manuellement un fichier classes.dex personnalisé.

Système de contrôle de version Mercurial intégré dans l'EDI

Appmethod prend désormais en charge un nouveau système de contrôle de version intégré dans l'EDI, pour la gestion et le suivi des modifications dans vos projets : le système de contrôle de version distribué Mercurial.

Le Gestionnaire de l'historique présente désormais les informations des journaux du contrôle de version Mercurial intégré à partir de votre référentiel local. Vous trouverez plus d'informations sur le suivi des modifications de votre projet dans les onglets Contenu, Informations et Différences.

Vous pouvez utiliser Mercurial pour :

  • Cloner une copie de votre référentiel Mercurial distant et commencer à travailler avec.
  • Valider les modifications apportées à votre référentiel local.
  • Afficher les données du journal du référentiel distant relatives à votre projet.

Dans 1.16, certaines fonctionnalités Git ont été ajoutées dans l'EDI :

  • Authentifier votre référentiel privé distant.
  • Placer vos modifications dans le référentiel Git distant et les extraire, en mettant à jour votre copie de travail avec les dernières modifications distantes.

Pour plus d'informations sur les systèmes de contrôle de version intégrés dans l'EDI, voir :

Outil de migration des paramètres

Le nouvel outil de migration des paramètres fourni avec Appmethod 1.16 vous permet d'importer et d'exporter des paramètres de configuration entre Appmethod et Appmethod ainsi qu'entre différentes versions des produits.

L'outil de migration prend en charge Borland Object Pascal 7 et toutes les versions ultérieures.

Avec l'outil de migration des paramètres, vous pouvez :

Vous pouvez trouver l'outil migrationtool.exe via le chemin d'accès suivant : C:\Program Files (x86)\Embarcadero\Studio\16.0\bin.

Consultez la page Outil de migration des paramètres pour plus de détails.

Nouvelles options de signature du code des applications iOS

Vous pouvez désormais sélectionner les données de signature que Appmethod utilise pour signer le code de vos applications iOS.

Sur la page Approvisionnement, pour les types de construction Périphérique iOS (Développement, Ad hoc, Magasin d'applications) vous pouvez sélectionner :

Si vous laissez l'une de ces valeurs sur Auto, Appmethod sélectionne un profil d'approvisionnement et un certificat développeur appropriés, qui correspondent au CFBundleIdentifier et au périphérique cible. Pour plus de détails, voir Compléter la page Approvisionnement.

Nouvelle option pour la construction de fichiers binaires iOS prenant en charge iOS 32 bits et 64 bits

A partir du 1er février 2015 (EN), toutes les nouvelles apps iOS soumises à l'App Store doivent inclure la prise en charge 64 bits. Ce qui signifie que les applications destinées aux périphériques exécutant iOS 32 bits doivent également prendre en charge iOS 64 bits.

L'EDI fournit une nouvelle option de compilateur pour la plate-forme cible iOS 64 bits, Générer le fichier binaire universel iOS (armv7 + arm64).
Lorsque vous activez cette option et déployez votre application, l'EDI génère un fichier binaire multi-architecture (EN) (Fat binary) qui prend en charge iOS 32 bits et 64 bits.

Vous pouvez trouver cette option dans :

Le droit 'Recevoir les notifications push' n'est plus nécessaire pour les applications iOS

Pour activer la réception des messages de notification push dans les applications iOS, il n'est pas nécessaire de définir d'autres options de projet Droit.
Appmethod signe le code de l'app iOS en utilisant un profil d'approvisionnement qui autorise les services de notification push sur le périphérique où l'app est installée. Voir Notifications push pour de plus amples informations.


Programme d'expérience client

L'EDI intègre une nouvelle option pour participer au programme d'expérience client. Vous pouvez rejoindre ce programme afin d'aider Embarcadero à améliorer Appmethod.

Le programme d'expérience client collecte des informations sur l'usage de l'EDI pendant votre session (la fréquence de lancement de Appmethod, la navigation dans l'EDI, etc.). Ces informations sont totalement anonymes, car le programme ne collecte pas et ne transmet pas d'informations privées ou d'identification personnelle.

Vous pouvez trouver cette option dans :

Pour plus de détails, voir la page Programme d'expérience client.

Changements visuels et personnalisation

Dans 1.16, l'apparence de l'EDI a changé. Voir Clés de registre système pour les paramètres visuels de l'EDI pour de plus amples informations sur la personnalisation de l'apparence de l'EDI. Pour annuler certains changements et redonner l'apparence de l'EDI de 1.15 à l'EDI de 1.16, procédez comme suit :

  1. Créez un nouveau document texte (vous pouvez utiliser n'importe quel éditeur de texte) et copiez-y le texte suivant : Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Embarcadero\BDS\16.0\ModernTheme] "FontName"="MS Sans Serif" "FontSize"=dword:00000008 "MainToolBarColor"="clBtnFace"
  2. Enregistrez le fichier avec l'extension .reg.
  3. Exécutez le fichier. Un avertissement concernant la modification du registre s'affiche. Vous devez l'accepter pour appliquer les changements.
    Remarque : Vous devez avoir des permissions Administrateur pour pouvoir exécuter les fichiers script de registre. Si l'EDI était ouvert lorsque vous avez défini ou changé les valeurs de registre, vous devez redémarrer l'EDI pour que les valeurs prennent effet.

Modifications relatives à la base de données et à la connectivité pour 1.16

Modifications relatives à FireDAC

Vous devez mettre à jour votre code FireDAC existant pour tenir compte des modifications API suivantes :

Membres de base* Modifications

FireDAC.Comp.Client.TFDAdaptedDataSet.OnError
FireDAC.Comp.Client.TFDCustomCommand.OnError
FireDAC.Comp.Client.TFDCustomConnection.OnError
FireDAC.Comp.Client.TFDCustomConnection.OnRecover
FireDAC.Comp.Client.TFDCustomSchemaAdapter.OnError
FireDAC.Comp.Client.TFDCustomTableAdapter.OnError
FireDAC.Comp.Client.TFDRdbmsDataSet.OnError
FireDAC.Comp.Script.TFDScript.OnError
FireDAC.Phys.TFDPhysDriverService.OnError

Dans 1.15, AInitiator était une interface objet IFDStanObject constante.

Dans 1.16, AInitiator est le même objet, sauf que vous le recevez sous la forme d'une instance de TObject.

FireDAC.Comp.Client.TFDCustomConnection.OnLogin

Dans 1.15, le deuxième paramètre était AConnectionDef, une interface objet IFDStanConnectionDef constante.

Dans 1.16, le deuxième paramètre est maintenant AParams, une instance de TFDConnectionDefParams qui contient les mêmes données que AConnectionDef.Params dans 1.15.

FireDAC.Comp.UI.TFDGUIxScriptDialog.OnProgress

Dans 1.15, AInfoProvider était une interface objet IFDGUIxScriptDialogInfoProvider constante.

Dans 1.16, AInfoProvider est le même objet, sauf que vous le recevez sous la forme d'une instance de TObject.

* Les modifications affectent également les membres hérités listés.

Services de mobilité d'entreprise

Application EMS Management Console

L'application EMS Management Console est une application exemple livrée avec Appmethod que vous pouvez utiliser pour gérer les données EMS stockées dans votre serveur EMS et envoyer des messages de notification push EMS vers vos périphériques recensés. Vous pouvez personnaliser cette application selon vos besoins, en utilisant le code source exemple livré avec Appmethod.

Avec l'application EMS Management Console, vous pouvez :

Pour plus d'informations sur la procédure d'utilisation de l'application EMS Management Console et sur l'emplacement du code source, voir Application EMS Management Console.

Compatibilité des bases de données avec le périphérique iOS 64 bits

La plate-forme Périphérique iOS 64 bits a été ajoutée à 1.16. La compatibilité de cette nouvelle plate-forme avec le système de gestion des bases de données (SGBD) est identique à la compatibilité proposée par la plate-forme Périphérique iOS 32 bits :

Modifications relatives au Concepteur de styles de bitmaps pour 1.16

  • Le Concepteur de styles de bitmaps a été mis à jour pour offrir de nouveaux modèles de style pour les versions actuellement prises en charge d'iOS et d'Android.
  • {{Le bouton Nouveau style présente une sélection de templates de style, y compris iOS, Android, Windows, Mac OS X, et divers styles vierges.
  • Vous pouvez créer des objets pour différentes résolutions en utilisant les nouvelles commandes du menu Style telles que Ajouter de nouveaux objets pour le graphique résolution 1.5x, Ajouter de nouveaux objets pour le graphique résolution 2.0x et Ajouter de nouveaux objets pour le graphique résolution 3.0x.
  • Vous pouvez désormais ajouter des templates d'objet en utilisant le nouveau bouton Ajouter un template d'objet de la barre d'outils. En utilisant la structure d'objets par défaut, vous avez seulement besoin d'effectuer des ajustements aux prédéfinitions et d'assigner des propriétés à votre guise.
  • Vous pouvez créer automatiquement d'autres résolutions appropriées de vos objets en utilisant la nouvelle commande de menu contextuel Ajuster automatiquement l'objet pour toutes les résolutions graphiques.
  • Vous pouvez tester vos objets personnalisés (et les tester sous différentes résolutions) en utilisant les nouvelles commandes de menu contextuel Tester le style d'objet.

Modifications relatives aux logiciels tiers pour 1.16

Box2D pour Modèle:Object Pascal et C++

Appmethod fournit désormais Box2D, un moteur physique à code source libre pour les jeux. Vous pouvez utiliser Box2D dans les applications Modèle:Object Pascal et C++ Appmethod.

Modifications relatives au débogueur pour 1.16

Le débogage des apps iOS64 n'est pas pris en charge (F9 n'est pas activé lorsque Périphérique iOS 64 bits est la plate-forme cible).
A la place, vous devez définir Périphérique iOS 32 bits en tant que plate-forme cible, terminer votre débogage, puis reconstruire votre app pour la plate-forme cible Périphérique iOS 64 bits.

Modifications relatives au framework de test pour 1.16

Appmethod fournit désormais une prise en charge de DUnitX pour Modèle:Object Pascal et Appmethod C++. Ce framework de test vous permet de développer et d'exécuter des tests sur des applications Win32, Win64 et MacOSX. DUnitX fournit son propre ensemble de méthodes pour tester un grand nombre de conditions. Ces méthodes représentent des assertions communes bien que vous puissiez créer vos propres assertions personnalisées.

Pour plus d'informations, voir Présentation de DUnitX.

Modifications relatives à l'utilitaire graphique pour 1.16

Nouveau gestionnaire de packages GetIt

Appmethod fournit un nouvel utilitaire graphique : GetIt. GetIt est un gestionnaire de packages qui vous permet de naviguer, de télécharger et d'installer facilement et gratuitement des packages GetIt sur Appmethod. Les packages GetIt fournissent des bibliothèques, des composants, des extensions de l'EDI, des SDK et davantage.

Pour de plus amples informations, voir Gestionnaire de packages GetIt.


Modifications relatives à l'aide

Nouveau système d'aide hors ligne (l'aide CHM remplace l'aide H2)

Les fichiers d'aide hors ligne livrés avec Appmethod sont désormais au format Aide HTML compilée de Microsoft, également appelé CHM. Pour plus d'informations, voir Utilisation de l'aide - CHM. Auparavant, l'aide hors ligne était livrée au format H2 et pouvait être visualisée en utilisant Microsoft DExplore.

La visionneuse Aide HTML compilée de Microsoft peut uniquement afficher l'aide hors ligne. Pour accéder à l'aide en ligne, vous devez soit l'ouvrir vous-même, soit cliquer sur Page Wiki en cours en bas de n'importe quelle page de l'aide hors ligne. Vous ne pouvez plus choisir d'afficher l'aide en ligne ou l'aide hors ligne dans la visionneuse de l'aide hors ligne.

Vous pouvez créer vos propres fichiers d'aide CHM et les lier à Appmethod. Pour plus d'informations, voir Fournir l'aide pour vos composants.

Rubriques