Embarcadero RAD STUDIO XE4: DELPHI XE4, C++ BUILDER XE4, and HTML5 Builder Manuel utilisateur
Ajouter à Mes manuels146 Des pages
▼
Scroll to page 2
of
146
Documentation du produit RAD Studio TUTORIELS IOS : DEVELOPPEMENT D'APPLICATIONS DELPHI IOS Version XE4 © 2013 Embarcadero Technologies, Inc. Embarcadero, les logos Embarcadero Technologies, et tous les autres noms de services ou de produits Embarcadero Technologies sont des marques ou des marques déposées de Embarcadero Technologies, Inc. Toutes les autres marques sont la propriété de leurs propriétaires respectifs. Embarcadero Technologies, Inc. est le leader des outils primés, destinés aux développeurs d'applications et aux professionnels des bases de données, leur permettant de concevoir de bons systèmes, de les construire plus rapidement et de mieux les exécuter, quel que soit leur plate-forme ou langage de programmation. Quatre-vingt-dix entreprises du classement des 100 premières entreprises américaines (liste "Fortune 100") et une communauté active de plus de trois millions d'utilisateurs à l'échelle mondiale comptent sur les produits Embarcadero pour augmenter leur productivité, réduire leurs coûts, simplifier la gestion des modifications et la conformité, et accélérer l'innovation. Les outils phare de la société sont les suivants : Embarcadero® Change Manager™, CodeGear™ RAD Studio, DBArtisan®, Delphi®, ER/Studio®, JBuilder® et Rapid SQL®. Fondé en 1993, Embarcadero a son siège social à San Francisco, avec des bureaux dans le monde entier. Visitez le site en ligne de Embarcadero sur www.embarcadero.com. April, 2013 Embarcadero Technologies 2 Sommaire Tutoriels iOS : Développement d'applications Delphi iOS .......................................... 8 Configuration ................................................................................................................. 8 Utilisation des éléments d'interface élémentaires ................................................... 8 Utilisation des fonctionnalités du périphérique ........................................................ 9 Accès à une base de données ................................................................................ 10 Voir aussi ....................................................................................................................... 10 Tutoriel iOS : Définition de votre environnement de développement sur le Mac 11 Exigences relatives au Mac ....................................................................................... 11 Etapes de configuration de votre Mac afin d'exécuter votre application iOS sur le simulateur iOS..................................................................................................... 11 Etape 1 : Installer Platform Assistant ...................................................................... 12 Etape 2 : Exécuter Platform Assistant ................................................................... 13 Etape 3 : Installer Xcode sur le Mac ..................................................................... 14 Etapes suivantes ...................................................................................................... 15 Etapes supplémentaires permettant de configurer votre Mac afin d'exécuter votre application iOS sur votre périphérique iOS ................................................... 15 Etape 1 : Installer les outils en ligne de commande Xcode sur un Mac ......... 16 Etape 2 : Inscription à un compte développeur ................................................ 17 Etape 3 : Demander, télécharger et installer votre certificat de développement ...................................................................................................... 17 Etape 4 : Recenser le périphérique pour le déploiement ................................ 18 Etape 5 : Créer et installer un profil d'approvisionnement................................ 19 Voir aussi ....................................................................................................................... 20 Tutoriel iOS : Définition de votre environnement de développement sur un PC Windows ........................................................................................................................... 22 Configuration de votre environnement RAD Studio ............................................. 22 Créer un profil de connexion pour le Mac .......................................................... 22 Ajouter un SDK au système de développement pour le périphérique iOS connecté au Mac ................................................................................................... 25 Voir aussi ....................................................................................................................... 26 Tutoriel iOS : Création d'une application FireMonkey iOS ........................................ 27 Avant de commencer ............................................................................................... 27 Etape 1 : Créer une nouvelle application FireMonkey HD pour iOS ................... 27 Etape 2 : Placer des composants sur la fiche FireMonkey iOS ............................ 28 Etape 3 : Ecrire un gestionnaire d'événements dans Delphi pour un clic de bouton par l'utilisateur ................................................................................................ 32 Etape 4 : Tester votre application iOS sur Mac (simulateur iOS) .......................... 33 Etape 5 : Tester votre application iOS sur un périphérique iOS connecté ......... 34 Voir aussi ....................................................................................................................... 35 Tutoriel iOS : Utilisation d'un composant Bouton avec différents styles dans une application iOS ................................................................................................................ 36 Embarcadero Technologies 3 Boutons dans les applications FireMonkey iOS ....................................................... 36 Définition de l'apparence d'un composant Bouton ............................................. 36 Création d'un contrôle segmenté en utilisant les composants Bouton ............. 38 Création d'une barre de portée sur un composant Barre d'outils ...................... 40 Voir aussi ....................................................................................................................... 40 Tutoriel iOS : Utilisation d'un composant Calendrier pour sélectionner une date dans une application iOS .............................................................................................. 41 Utilisation d'un calendrier dans des applications FireMonkey iOS ...................... 41 Implémentation d'un gestionnaire d'événéments correspondant aux modifications utilisateur relatives à la date ............................................................ 42 Voir aussi ....................................................................................................................... 43 Tutoriel iOS : Utilisation de composants Zone de liste déroulante pour sélectionner des éléments dans une liste d'une application iOS............................ 44 Implémentation d'un sélecteur dans des applications FireMonkey iOS ............ 44 Construction d'une liste d'éléments en utilisant le code ...................................... 46 Affichage d'un élément spécifique ......................................................................... 47 Implémentation d'un gestionnaire d'événements correspondant à la sélection effectuée par l'utilisateur ........................................................................................... 48 Voir aussi ....................................................................................................................... 49 Tutoriel iOS : Utilisation du composant Navigateur Web dans une application iOS ........................................................................................................................................... 50 Utilisation du composant Navigateur Web dans des applications FireMonkey iOS .................................................................................................................................. 50 Etape 1 : Conception de l'interface utilisateur ...................................................... 51 Etape 2 : Ecriture d'un gestionnaire d'événements provoquant l'ouverture d'une page Web lorsque l'utilisateur change d'URL dans le contrôle de saisie 53 Implémentation d'une méthode commune pour ouvrir une page Web ...... 54 Implémentation d'un gestionnaire d'événements pour l'événement OnChange ............................................................................................................... 55 Implémentation d'un gestionnaire d'événements pour supporter la touche Entrée ........................................................................................................................ 55 Implémentation d'un gestionnaire d'événements pour le bouton Back ....... 56 Etape 3 : Sélection du clavier approprié pour l'application Navigateur Web . 56 Voir aussi ....................................................................................................................... 57 Tutoriel iOS : Utilisation des composants Onglet pour afficher des pages dans une application iOS ........................................................................................................ 58 Onglets dans les applications FireMonkey iOS ....................................................... 58 Conception de pages d'onglets en utilisant le Concepteur de fiches .............. 58 Utilisation d'icônes personnalisées pour les onglets ............................................... 63 Définition de contrôles dans un TabControl ........................................................... 66 Changement de page à l'exécution ...................................................................... 67 Par l'interaction de l'utilisateur en touchant l'onglet.......................................... 67 Par les actions et une liste d'actions ..................................................................... 67 Par le code source .................................................................................................. 71 Embarcadero Technologies 4 Voir aussi ....................................................................................................................... 71 Tutoriel iOS : Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS .............................................................................................. 72 Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS ............................................................................................................ 72 Création des éléments sur le composant Zone de liste ........................................ 73 Ajout d'un en-tête ....................................................................................................... 75 Ajout d'un groupe en-tête/pied à la liste ................................................................ 76 Affichage des éléments de liste sous forme d'éléments groupés séparés ........ 77 Ajout d'une case à cocher ou d'un autre accessoire à un élément de zone de liste ................................................................................................................................. 78 Ajout d'une icône à un élément de zone de liste ................................................. 79 Ajout d'informations de détail à un élément .......................................................... 79 Ajout d'éléments à une zone de liste à partir du code ........................................ 80 Ajout d'une zone de recherche ............................................................................... 82 Voir aussi ....................................................................................................................... 83 Tutoriel iOS : Utilisation de la disposition pour ajuster différentes tailles de fiches ou orientations dans une application iOS .................................................................. 84 Chaque composant FireMonkey peut avoir un propriétaire, un parent et des enfants .......................................................................................................................... 84 Utilisation des propriétés communes relatives à la disposition d'un composant FireMonkey ................................................................................................................... 85 Utilisation de la propriété Align.............................................................................. 85 Utilisation de la propriété Margins......................................................................... 86 Utilisation de la propriété Padding ....................................................................... 86 Utilisation de la propriété Anchors ........................................................................ 87 Utilisation du composant TLayout ............................................................................. 88 Manipulation d'une interface encombrée : Utilisation du composant TVertScrollBox ............................................................................................................... 89 Voir aussi ....................................................................................................................... 90 Tutoriel iOS : Prendre une photo et la partager dans une application iOS ........... 91 Construction de l'interface utilisateur pour l'application ...................................... 92 Prendre une photo avec la caméra du périphérique iOS ................................... 92 Utilisation d'une photo de la bibliothèque de photos du périphérique iOS ...... 93 Partage ou impression d'une photo ......................................................................... 94 Voir aussi ....................................................................................................................... 95 Tutoriel iOS : Utilisation de détecteurs d'emplacement sur le périphérique iOS ... 96 Conception de l'interface utilisateur ....................................................................... 97 Le détecteur d'emplacement .................................................................................. 98 Lecture des informations d'emplacement (Latitude, Longitude) à partir du composant LocationSensor ....................................................................................... 98 Affichage de l'emplacement en cours en utilisant Google Maps via un composant TWebBrowser .......................................................................................... 99 Utilisation du géocodage inversé ........................................................................... 100 Embarcadero Technologies 5 Affichage d'une adresse lisible dans le composant Zone de liste .................... 102 Voir aussi ..................................................................................................................... 103 Tutoriel iOS : Utilisation du Centre de notifications sur le périphérique iOS ......... 104 Trois notifications élémentaires ou styles d'alerte ................................................. 104 Badge affiché sur l'icône d'application ............................................................. 104 Bannière de notification sur l'iPad....................................................................... 104 Alerte de notification ............................................................................................ 104 Centre de notifications sur l'iPad ........................................................................ 104 Accès au service de notifications .......................................................................... 105 Définition du numéro de badge d'icône à partir du code ................................ 106 Planification des notifications .................................................................................. 107 Mise à jour ou annulation d'un message de notification ................................... 108 Présentation immédiate du message de notification ........................................ 109 Bannière de notification ou alerte de notification .............................................. 109 Ajouter des actions à l'alerte de notification ....................................................... 111 Voir aussi ..................................................................................................................... 111 Tutoriel iOS : Utilisation de InterBase ToGo dans une application iOS .................. 112 Utilisation de dbExpress pour se connecter à la base de données .................. 112 Conception et configuration de l'interface utilisateur ........................................ 113 Connexion aux données .......................................................................................... 114 Déploiement de votre application sur iOS............................................................ 117 Déployer InterBase ToGo, dbExpress Driver et le fichier de base de données sur iOS ...................................................................................................................... 117 Modifier votre code pour se connecter à un fichier de base de données local sur iOS ............................................................................................................ 119 Exécuter votre application sur le simulateur iOS ou sur un périphérique iOS .. 120 Dépannage ............................................................................................................... 121 Problèmes de licences InterBase ........................................................................ 121 Problèmes de gestion des exceptions ............................................................... 121 Erreurs typiques et résolutions .............................................................................. 122 Voir aussi ..................................................................................................................... 122 Tutoriel iOS : Utilisation de SQLite dans une application iOS .................................. 123 Utilisation de dbExpress pour se connecter à la base de données .................. 124 Création de la base de données dans l'environnement Windows à des fins de développement ........................................................................................................ 124 Créer la base de données dans l'explorateur de données ........................... 124 Créer une table sur l'explorateur de données .................................................. 126 Conception et configuration de l'interface utilisateur ........................................ 127 Connexion aux données .......................................................................................... 128 Création du gestionnaire d'événements afin de rendre visible le bouton Delete quand l'utilisateur sélectionne un élément dans la liste ........................ 129 Création du gestionnaire d'événements pour le bouton Add afin d'ajouter une entrée dans la liste .................................................................................................... 130 Embarcadero Technologies 6 Création du gestionnaire d'événements pour le bouton Delete afin de retirer une entrée de la liste ................................................................................................ 132 Modification de votre code pour se connecter à un fichier de base de données local sur iOS ............................................................................................... 133 Spécification de l'emplacement de la base de données SQLite sur le périphérique iOS .................................................................................................... 133 Création d'une table si aucune n'existe ............................................................ 134 Exécution de votre application sur le simulateur iOS ou sur un périphérique iOS ...................................................................................................................................... 135 Voir aussi ..................................................................................................................... 135 Tutoriel iOS : Connexion à une base de données d'entreprise depuis une application client iOS ................................................................................................... 136 Création du niveau intermédiaire, un serveur DataSnap .................................. 137 Créer une application VCL Serveur DataSnap ................................................ 137 Définir un ensemble de données sur le serveur DataSnap ............................. 139 Exposer l'ensemble de données à partir du serveur DataSnap ..................... 141 Exécuter le serveur DataSnap ............................................................................. 141 Création d'une application iOS qui se connecte au serveur DataSnap ......... 142 Déployer la bibliothèque MIDAS sur le simulateur iOS ........................................ 145 Exécuter votre application sur le simulateur iOS ou sur un périphérique iOS .. 146 Voir aussi ..................................................................................................................... 146 Embarcadero Technologies 7 TUTORIELS IOS : DEVELOPPEMENT D'APPLICATIONS DELPHI IOS Cet ensemble de tutoriels intégré vous guide à travers le développement d'une application iOS avec RAD Studio : Après le tutoriel de configuration initiale, chaque tutoriel présente la construction d'une application iOS avec les outils FireMonkey. Les tutoriels présentent les composants FireMonkey recommandés à utiliser afin d'obtenir un aspect natif dans vos applications iOS. CONFIGURATION Définition de votre environnement de développement sur le Mac Définition de votre environnement de développement sur un PC Windows UTILISATION DES ELEMENTS D'INTERFACE ELEMENTAIRES Création d'une application FireMonkey iOS Utilisation d'un composant Bouton avec différents styles dans une application iOS Embarcadero Technologies 8 Utilisation d'un composant Calendrier pour sélectionner une date dans une application iOS Utilisation de composants Zone de liste déroulante pour sélectionner des éléments dans une liste d'une application iOS Utilisation du composant Navigateur Web dans une application iOS Utilisation des composants Onglet pour afficher des pages dans une application iOS Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS Utilisation de la disposition pour ajuster différentes tailles de fiches ou orientations dans une application iOS UTILISATION DES FONCTIONNALITES DU PERIPHERIQUE Embarcadero Technologies Prendre une photo et la partager dans une application iOS 9 Utilisation de détecteurs d'emplacement sur le périphérique iOS Utilisation du Centre de notifications sur le périphérique iOS ACCES A UNE BASE DE DONNEES Utilisation de InterBase ToGo dans une application iOS Utilisation de SQLite dans une application iOS Connexion à une base de données d'entreprise depuis une application client iOS VOIR AUSSI Guide de prise en main FireMonkey Création d'une application FireMonkey iOS Conception d'applications FireMonkey Extraits de code iOS Développement d'applications mobiles iOS Embarcadero Technologies 10 TUTORIEL IOS : DEFINITION DE VOTRE ENVIRONNEMENT DE DEVELOPPEMENT SUR LE MAC Une application FireMonkey destinée à la plate-forme cible iOS est testée d'abord sur le simulateur iOS disponible sur le Mac. La deuxième moitié du processus de test consiste à utiliser la plate-forme cible Périphérique iOS et requiert un périphérique iOS test connecté au Mac. La première moitié de ce tutoriel décrit les étapes à effectuer afin d'exécuter votre application iOS sur le simulateur iOS sur le Mac. La deuxième moitié de ce tutoriel décrit les étapes supplémentaires requises afin d'exécuter votre application iOS sur votre périphérique iOS. EXIGENCES RELATIVES AU MAC OS X 10.7 Lion ou 10.8 Mountain Lion Aucun système d'exploitation n'est supporté sur les anciens systèmes Macintosh PowerPC- et 680x0. Tous les Macs depuis 2007 sont basés sur Intel ; tous depuis 2008 sont 64 bits, ce que Lion requiert. iOS 5.1 et supérieur Dernière version de Xcode et iOS SDK installés, et outils en ligne de commande Xcode installés o Nécessite l'appartenance à l'un des programmes développeur Apple, décrits dans cette rubrique sous Etape 2 : Inscription à un compte développeur. Un périphérique iOS connecté au Mac par le port USB (requis pour tester ou exécuter votre application iOS sur le périphérique) ETAPES DE CONFIGURATION DE VOTRE MAC AFIN D'EXECUTER VOTRE APPLICATION IOS SUR LE SIMULATEUR IOS Pour déployer une application iOS vers le simulateur iOS sur le Mac, vous devez installer les outils suivants sur votre Mac : Platform Assistant (PAServer) Embarcadero Technologies 11 A des fins de débogage, RAD Studio utilise Platform Assistant, une application que vous devez installer et exécuter sur le Mac. Xcode Xcode est l'environnement de développement et de débogage sur le Mac, qui fournit les fichiers de développement requis pour les applications Mac OS X et iOS. ETAPE 1 : INSTALLER PLATFORM ASSISTANT Comme nous l'avons indiqué, Platform Assistant doit s'exécuter sur le Mac quand vous déployez une application iOS de votre PC vers le simulateur iOS ou un périphérique iOS. L'installateur Mac OS X pour Platform Assistant se nomme RADPAServerXE4.pkg et est disponible à deux emplacements : Dans le dossier PAServer au sein du répertoire d'installation de RAD Studio. Par exemple, C:\Program Files\Embarcadero\RAD Studio\11.0\PAServer\RADPAServerXE4.pkg. Sur le Web où vous pouvez le télécharger sur le Mac : http://installers.codegear.com/release/radstudio/11.0/PAServer/RADPASer verXE4.pkg Embarcadero Technologies 12 Pour plus de détails, voir Installation de Platform Assistant sur un Mac. ETAPE 2 : EXECUTER PLATFORM ASSISTANT Sur le Mac, dans le Finder, activez le fichier .app (RAD PAServer XE4.app) de la manière suivante : 1. Naviguez jusqu'au dossier de niveau supérieur Applications. 2. Double-cliquez sur RAD PAServer XE4.app pour démarrer Platform Assistant. La fenêtre Terminal apparaît, affichant la bannière Platform Assistant et l'invite de mot de passe : Mot de passe du profil de connexion <appuyez sur Entrée si aucun mot de passe> : Embarcadero Technologies 13 3. Vous êtes maintenant invité à entrer votre mot de passe d'utilisateur Mac pour permettre à Platform Assistant de déboguer (prendre le contrôle d'un autre processus) votre application. Entrez votre mot de passe et sélectionnez Take Control. Pour plus de détails sur l'exécution de Platform Assistant, voir Exécution de Platform Assistant sur un Mac. ETAPE 3 : INSTALLER XCODE SUR LE MAC Xcode est l'environnement de développement et de débogage sur le Mac. Il fournit les fichiers de développement requis pour les applications Mac OS X et iOS. Vous pouvez installer Xcode depuis l'une des sources suivantes : Sur votre DVD "Mac OS X Install", sous Optional Installs, double-cliquez sur Xcode.mpkg pour installer Xcode sur votre système. Au niveau de l'App Store Mac, téléchargez Xcode gratuitement. En tant que développeur Apple enregistré, vous pouvez télécharger la dernière version de Xcode sous forme de bundle (.dmg). Pour s'enregistrer puis télécharger Xcode : 1. Enregistrez-vous (gratuitement) en tant que développeur Apple sur http://developer.apple.com/programs/register/. 2. Téléchargez Xcode sous forme de bundle à l'adresse https://developer.apple.com/downloads. Embarcadero Technologies 14 ETAPES SUIVANTES Vous avez configuré votre Mac pour exécuter une application iOS sur le simulateur iOS. Pour exécuter maintenant une application iOS sur le simulateur iOS, voir Tutoriel iOS : Définition de votre environnement de développement sur un PC Windows pour achever la configuration de l'EDI de votre RAD Studio. Pour exécuter votre application iOS sur votre périphérique iOS, utilisez les étapes suivantes sur cette page pour achever la configuration de votre Mac. Notez que vous pouvez effectuer ces étapes après le test d'une application sur le simulateur iOS. ETAPES SUPPLEMENTAIRES PERMETTANT DE CONFIGURER VOTRE MAC AFIN D'EXECUTER VOTRE APPLICATION IOS SUR VOTRE PERIPHERIQUE IOS Les étapes supplémentaires suivantes vous permettent d'exécuter votre application iOS sur votre périphérique iOS. Embarcadero Technologies 15 ETAPE 1 : INSTALLER LES OUTILS EN LIGNE DE COMMANDE XCODE SUR UN MAC Pour installer les outils Xcode nécessaires en utilisant Xcode sur le Mac : 1. Démarrez Xcode sur le Mac. 2. Choisissez Preferences dans le menu Xcode. 3. Dans le panneau General, cliquez sur Downloads. 4. Sur la fenêtre Downloads, choisissez l'onglet Components. 5. Cliquez sur le bouton Install auprès de Command Line Tools. Vous êtes invité à fournir votre identifiant de connexion développeur Apple pendant le processus d'installation. Pour plus de détails, voir Installation des outils en ligne de commande Xcode sur un Mac. Embarcadero Technologies 16 ETAPE 2 : INSCRIPTION A UN COMPTE DEVELOPPEUR L'appartenance à l'un des programmes Développeur iOS est obligatoire pour construire, exécuter, déboguer et déployer des applications pour iOS. Vous pouvez rejoindre un programme développeur d'une des deux façons suivantes : En tant que développeur individuel. En tant que membre (ou chef) d'une équipe dans un programme d'entreprise (métier) ou un programme universitaire. Pour plus de détails, voir Rejoindre un programme Développeur iOS. ETAPE 3 : DEMANDER, TELECHARGER ET INSTALLER VOTRE CERTIFICAT DE DEVELOPPEMENT Les applications qui sont déployées sur le périphérique (ou sur le simulateur iOS) doivent être signées cryptographiquement avant leur exécution. Le certificat de développement contient des informations nécessaires à la signature des applications. Chaque individu (un développeur individuel ou un membre d'équipe) doit avoir un certificat de développement unique, utilisable pour plusieurs applications. Pour les équipes de développement, les certificats de développement doivent être demandés par chaque membre d'équipe, et ces demandes doivent être approuvées par un administrateur d'équipe. Demander, télécharger et installer votre certificat 1. Dans l'application Keychain Access de votre Mac, sélectionnez dans le menu Keychain Access : Certificate Assistant > Request a Certificate From a Certificate Authority. Embarcadero Technologies 17 Enregistrez la demande de certificat dans un fichier, puis envoyez-le à votre autorité de certificat en le téléchargeant dans le Portail d'approvisionnement iOS de Apple. Si vous êtes un membre de l'équipe de développement d'un programme d'entreprise/d'organisation, l'administrateur de votre équipe doit approuver votre demande. Dès que l'administrateur de votre équipe l'a approuvé, vous pouvez télécharger le certificat. o Si vous êtes un développeur individuel, une option de téléchargement de votre certificat devrait apparaître rapidement dès sa demande. Voir la documentation de Apple sur : Creating signing certificates pour plus de détails. 2. Accédez au Portail d'approvisionnement iOS. Vous pouvez télécharger le certificat de développement dès que le statut passe de Submitted à Issued. o 3. Lancez le certificat de développement en double-cliquant dessus. Il se charge automatiquement dans l'application Keychain Access. ETAPE 4 : RECENSER LE PERIPHERIQUE POUR LE DEPLOIEMENT Avant qu'un périphérique puisse exécuter des applications utilisateur, il doit être recensé dans le Portail d'approvisionnement Apple. Les périphériques sont Embarcadero Technologies 18 recensés par leur identifiant de périphérique unique (UDID). Le UDID peut être déterminé par Xcode, comme suit : 1. Assurez-vous que votre périphérique iOS est connecté à votre machine Mac. 2. Ouvrez Xcode et accédez à l'organisateur (Window > Organizer). 3. Dans l'onglet Devices, cliquez sur votre périphérique. 4. Une chaîne de caractères se trouve auprès du libellé Identifier : La chaîne Identifier représente le UDID de votre périphérique. o o Si vous êtes un développeur individuel, recensez votre périphérique en ajoutant le UDID dans l'onglet Devices du Portail d'approvisionnement Apple. Si vous appartenez à une société/organisation, demandez à l'administrateur de votre équipe de recenser votre périphérique. ETAPE 5 : CREER ET INSTALLER UN PROFIL D'APPROVISIONNEMENT Les profils d'approvisionnement sont utilisés pour lier un développeur et des périphériques à une équipe de développement. Ce profil d'approvisionnement est requis pour l'exécution d'applications sur un périphérique iOS. Si vous êtes un développeur individuel, vous devez créer un profil d'approvisionnement. Pour des informations spécifiques, voir : Creating and Downloading a Distribution Provisioning Profile. Si vous appartenez à une société/organisation, l'administrateur de votre équipe doit créer un profil d'approvisionnement que vous pourrez utiliser. Dès que votre profil d'approvisionnement est créé, vous devez l'installer dans Xcode, comme suit : 1. Ouvrez Xcode sur le Mac et accédez à l'organisateur (Window > Organizer). Embarcadero Technologies 19 2. Dans la section Library, sélectionnez Provisioning Profiles et cliquez sur Refresh. 3. Xcode vous demande de signer avec votre identifiant Apple. Entrez vos informations d'identification et sélectionnez Log in. Les profils d'approvisionnement disponibles sont installés dans votre Xcode : 4. Sélectionnez un profil d'approvisionnement iOS valide et faites-le glisser dans les profils d'approvisionnement de votre périphérique test. Vous avez configuré votre Mac pour exécuter votre application iOS sur votre périphérique iOS. Pour exécuter votre application iOS, voir Tutoriel iOS : Définition de votre environnement de développement sur un PC Windows et achevez la configuration de l'EDI de votre RAD Studio. Si vous avez configuré votre PC pour l'exécution de votre application sur le simulateur iOS, vous pouvez ignorer cette étape. VOIR AUSSI Tutoriel iOS : Définition de votre environnement de développement sur un PC Windows paserver, l'application serveur Platform Assistant Apple Developer Program iOS Developer Program Embarcadero Technologies 20 Creating and Configuring App IDs Creating signing certificates iOS Provisioning Portal Devices tab of the Apple Provisioning Portal Create an Apple ID Creating and Downloading a Distribution Provisioning Profile Installation de Platform Assistant sur un Mac Exécution de Platform Assistant sur un Mac Embarcadero Technologies 21 TUTORIEL IOS : DEFINITION DE VOTRE ENVIRONNEMENT DE DEVELOPPEMENT SUR UN PC WINDOWS Avant de commencer ce tutoriel, il est recommandé de lire et suivre le tutoriel suivant : Tutoriel iOS : Définition de votre environnement de développement sur le Mac Une application FireMonkey destinée à la plate-forme cible iOS est testée d'abord sur le simulateur iOS disponible sur le Mac. La deuxième moitié du processus de test consiste à utiliser la plate-forme cible Périphérique iOS et requiert un périphérique iOS test connecté au Mac. Pour déployer une application iOS sur votre périphérique à des fins de débogage et de tests, RAD Studio utilise Platform Assistant que vous devez installer et exécuter sur le Mac. Cette section décrit les étapes de configuration de votre environnement de développement après la configuration de votre environnement sur votre Mac. CONFIGURATION DE VOTRE ENVIRONNEMENT RAD STUDIO Les étapes de configuration suivantes accélèrent le développement iOS avec RAD Studio. CREER UN PROFIL DE CONNEXION POUR LE MAC 1. Ouvrez Outils > Options > Options d'environnement > Gestionnaire de profils de connexion. Embarcadero Technologies 22 2. Sélectionnez Ajouter : 3. Vous apercevez maintenant l'expert Créer un profil de connexion. Définissez le nom du profil de connexion, par exemple "Mon Mac". Assurez-vous de sélectionner OS X comme plate-forme cible, puis cliquez sur Suivant : 4. Dans la page Informations relatives à la machine hôte, définissez le nom ou l'adresse IP du Mac hôte, le numéro de port à utiliser (le port par Embarcadero Technologies 23 défaut 64211 fonctionne typiquement) et un mot de passe facultatif (si vous souhaitez utiliser un mot de passe). 5. Cliquez sur Tester la connexion et assurez-vous que le profil de connexion fonctionne sans erreur (vous devez recevoir le message "La connexion à <nom d'hôte> sur le port <numéro de port> a réussi") : Embarcadero Technologies 24 AJOUTER UN SDK AU SYSTEME DE DEVELOPPEMENT POUR LE PERIPHERIQUE IOS CONNECTE AU MAC 1. Ouvrez Outils > Options > Options d'environnement > Gestionnaire de SDK : 2. Sélectionnez Ajouter. 3. Sur la boîte de dialogue Ajouter un nouveau SDK, sélectionnez Périphérique iOS comme plate-forme. 4. Sélectionnez une plate-forme à connecter (comme par exemple "Périphérique iOS") : Embarcadero Technologies 25 5. Après la sélection d'une plate-forme, l'EDI remplit un profil (comme "Mon Mac") et la zone de liste déroulante relative à la version SDK par la liste des versions SDK disponibles sur la plate-forme cible : Cliquez sur OK pour fermer la boîte de dialogue. VOIR AUSSI Tutoriel iOS : Création d'une application FireMonkey iOS Travailler avec un Mac et un PC Exécution de votre application sur un périphérique iOS Exécution de votre application sur le simulateur iOS Prérequis de plate-forme FireMonkey Création d'une application FireMonkey iOS Développement d'applications Mac OS X Création d'une application FireMonkey Pages Apple developer.apple.com o iOS Developer Library o iOS Developer Library: Getting Started o iOS Dev Center o Provisioning an iOS Device o Preparing Your iOS App for Distribution in the App Store o iAd Network Embarcadero Technologies 26 TUTORIEL IOS : CREATION D'UNE APPLICATION FIREMONKEY IOS Cette rubrique explique comment créer une application "Hello World" FireMonkey pour la plate-forme cible iOS. AVANT DE COMMENCER Pour développer des applications iOS en utilisant RAD Studio, vous devez accomplir d'importantes étapes de configuration. Ce tutoriel suppose que vous avez accompli toutes les étapes de configuration préalables. Pour plus de détails, voir : Tutoriel iOS : Définition de votre environnement de développement sur un PC Windows Développement d'applications mobiles iOS ETAPE 1 : CREER UNE NOUVELLE APPLICATION FIREMONKEY HD POUR IOS 1. Sélectionnez Fichier > Nouveau > Application mobile FireMonkey > Application mobile FireMonkey – Delphi : Embarcadero Technologies 27 2. Sélectionnez Application vide. Le Concepteur de fiches mobiles FireMonkey affiche à présent une nouvelle fiche pour une application iOS : ETAPE 2 : PLACER DES COMPOSANTS SUR LA FICHE FIREMONKEY IOS La première étape de la création d'une application FireMonkey iOS est la conception de l'interface utilisateur (identique à la première étape des applications destinées à une plate-forme de bureau). De nombreux composants réutilisables sont disponibles dans l'EDI pour la création d'interfaces utilisateur. 1. Déplacez le pointeur de la souris sur la palette d'outils et développez la catégorie Standard en cliquant sur l'icône plus (+) qui suit le nom de catégorie. 2. Sélectionnez ensuite le composant TEdit et déposez-le sur le Concepteur de fiches. Une instance du composant TEdit s'affiche sur la fiche : Embarcadero Technologies 28 Répétez ces étapes en ajoutant un TLabel et un TButton sur la fiche. Sélectionnez le bouton et changez la propriété Text dans l'inspecteur d'objets par "Say Hello". Vous devriez maintenant voir trois composants sur le Concepteur de fiches : Après que vous ayez placé ces composants sur le Concepteur de fiches, l'EDI définit automatiquement leur nom. Pour voir ou changer le nom d'un composant, cliquez sur le composant dans le Concepteur de fiches, puis trouvez sa propriété Name dans l'inspecteur d'objets et la vue Structure : Embarcadero Technologies 29 Pour un composant TButton, le nom du composant est défini par défaut à Button1 (ou Button2, Button3, selon le nombre de composants TButton ayant été créés dans cette application). La fiche sur laquelle ces composants sont localisés a aussi un nom. Sélectionnez l'arrière-plan du Concepteur de fiches mobiles FireMonkey, puis la propriété Name dans l'inspecteur d'objets. Le nom de la fiche Form1 (ou Form2, Form3, etc.) est affiché. Vous pouvez facilement localiser le nom de la fiche dans la vue Structure : Embarcadero Technologies 30 Vous pouvez facilement permuter l'affichage et accéder au code source en sélectionnant l'onglet Code en bas du Concepteur de fiches ou en appuyant sur la touche F12. Vous pouvez permuter entre le Concepteur de fiches et l'éditeur de code à tout moment : Lorsque vous basculez sur l'éditeur de code, vous visualisez le code source généré par l'EDI. Les trois composants sont normalement définis (Edit1, Label1 et Button1) : Embarcadero Technologies 31 ETAPE 3 : ECRIRE UN GESTIONNAIRE D'EVENEMENTS DANS DELPHI POUR UN CLIC DE BOUTON PAR L'UTILISATEUR L'étape suivante consiste à définir un gestionnaire d'événements pour le composant TButton. Vous définissez des gestionnaires d'événements pour votre application FireMonkey iOS de la même façon que pour les applications de bureau. Pour le composant TButton, l'événement le plus typique est un clic sur le bouton. Lorsque vous double-cliquez sur le bouton sur le Concepteur de fiches, RAD Studio crée un code squelette utilisable pour implémenter un gestionnaire d'événements pour l'événement clic de bouton. Vous pouvez maintenant implémenter les réponses entre les instructions begin et end de la méthode Button1Click. L'extrait de code suivant implémente une réponse pour afficher un petit dialogue sur lequel est écrit "Hello + <nom entré dans la zone d'édition>" : Label1.Text := 'Hello ' + Edit1.Text + ' !'; Dans Delphi, les marques de délimitation qui encadrent les littéraux chaîne doivent être des apostrophes droites simples (comme dans 'chaîne', par exemple). Vous pouvez utiliser le signe plus (+) pour concaténer des chaînes. Si vous voulez placer un guillemet simple à l'intérieur d'une chaîne, vous devez utiliser deux guillemets simples consécutifs à l'intérieur de la chaîne, ce qui équivaut à un guillemet simple. Au fur et à mesure que vous tapez le code, des conseils indiquant le type de paramètre à spécifier apparaissent. Les conseils affichent également les types de membres supportés dans une classe donnée : Embarcadero Technologies 32 ETAPE 4 : TESTER VOTRE APPLICATION IOS SUR MAC (SIMULATEUR IOS) L'implémentation de cette application est terminée, vous pouvez donc l'exécuter. Vous pouvez cliquer sur le bouton Exécuter ( ) de l'EDI, appuyer sur F9 ou sélectionner Exécuter > Exécuter dans le menu principal de RAD Studio. Par défaut, les applications FireMonkey iOS s'exécutent sur la plate-forme cible Simulateur iOS. Vous pouvez confirmer la plate-forme cible dans le Gestionnaire de projets : Embarcadero Technologies 33 Lorsque vous exécutez votre application, elle est déployée sur le Mac puis sur le simulateur iOS sur le Mac. Pour votre application, une fiche comportant une zone d'édition et un bouton est affichée. Entrez un texte dans la zone d'édition et cliquez sur le bouton Say Hello : ETAPE 5 : TESTER VOTRE APPLICATION IOS SUR UN PERIPHERIQUE IOS CONNECTE Si vous avez suivi les étapes décrites dans Tutoriel iOS : Définition de votre environnement de développement sur un PC Windows avant de créer votre nouveau projet, vous pouvez maintenant exécuter votre application iOS sur un périphérique iOS connecté à votre Mac par câble USB. Pour exécuter votre application iOS sur un périphérique iOS connecté, sélectionnez d'abord la plate-forme cible Périphérique iOS afin que Platform Assistant puisse déployer l'application sur le périphérique iOS connecté : Embarcadero Technologies 34 Après avoir sélectionné la plate-forme cible Périphérique iOS, exécutez votre application iOS en cliquant sur le bouton Exécuter dans l'EDI, en appuyant sur F9 ou en sélectionnant Exécuter > Exécuter. Accédez ensuite à votre périphérique iOS et attendez que l'application FireMonkey iOS apparaisse. Remarquez l'image de lancement de FireMonkey (disponible dans $(BDS)\bin\Artwork\iOS) : VOIR AUSSI Tutoriel iOS : Utilisation d'un composant Bouton avec différents styles dans une application iOS Développement d'applications mobiles iOS Développement d'applications Mac OS X Embarcadero Technologies 35 TUTORIEL IOS : UTILISATION D'UN COMPOSANT BOUTON AVEC DIFFERENTS STYLES DANS UNE APPLICATION IOS BOUTONS DANS LES APPLICATIONS FIREMONKEY IOS FireMonkey définit plusieurs types de boutons que vous pourrez utiliser en suivant les étapes décrites dans ce tutoriel. Les boutons FireMonkey comprennent TButton et TSpeedButton. Vous trouverez ci-après quelques exemples des divers styles de composants Bouton à différents endroits de l'interface utilisateur. Boutons placés sur la fiche : o o Boutons placés sur la barre de navigation (aussi appelée Barre d'outils) : o o o o o o DEFINITION DE L'APPARENCE D'UN COMPOSANT BOUTON Après avoir placé un nouveau bouton sur le Concepteur mobile FireMonkey, vous pouvez spécifier d'importantes propriétés pour le composant sélectionné en utilisant l'inspecteur d'objets. Embarcadero Technologies 36 Sélectionnez un composant (dans ce cas, un bouton), puis modifiez les valeurs de certaines propriétés en procédant comme suit : Changez le texte affiché à la surface du bouton en modifiant la valeur de la propriété Text. Changez la valeur des propriétés Position.X et Position.Y (ou faites glisser le composant en utilisant la souris). Changez la valeur des propriétés Height et/ou Width (ou faites glisser le bord du composant en utilisant la souris). Cliquez sur la flèche vers le bas de la propriété StyleLookup. Dans la liste déroulante StyleLookup, sélectionnez un style prédéfini en fonction de l'utilisation de votre composant : Embarcadero Technologies 37 CREATION D'UN CONTROLE SEGMENTE EN UTILISANT LES COMPOSANTS BOUTON FireMonkey utilise le composant Bouton pour définir le contrôle segmenté ; il permet aux utilisateurs de sélectionner une valeur parmi plusieurs options. Pour définir un contrôle segmenté, utilisez les étapes suivantes : 1. Placez trois composants TSpeedButton à partir de la Palette d'outils. Placez les composants TSpeedButton les uns après les autres en utilisant la souris : 2. Sélectionnez le premier composant et changez sa propriété StyleLookup en segmentedbuttonleft : 3. Sélectionnez le second composant et changez sa propriété StyleLookup en segmentedbuttonmiddle. 4. Sélectionnez le troisième composant et changez sa propriété StyleLookup en segmentedbuttonright. Maintenant les trois boutons ont l'apparence d'un contrôle segmenté : 5. Sélectionnez chaque composant et changez sa propriété Text comme vous le souhaitez : Embarcadero Technologies 38 6. Cliquez sur ces trois boutons et faites-les glisser pour les sélectionner : 7. Définissez la propriété GroupName en spécifiant un nom unique tel que LocationSegments : 8. Pour spécifier que l'un de ces composants apparaîtra par défaut à l'état appuyé, définissez sa propriété IsPressed sur True : Embarcadero Technologies 39 CREATION D'UNE BARRE DE PORTEE SUR UN COMPOSANT BARRE D'OUTILS Vous pouvez définir un contrôle segmenté sur une barre d'outils. Ce composant également appelé barre de portée est un contrôle segmenté pouvant être utilisé pour contrôler la portée d'une recherche. Utilisez les mêmes contrôles TSpeedButton que lors des étapes précédentes, mais en utilisant les valeurs suivantes pour la propriété StyleLookup. toolbuttonleft toolbuttonmiddle toolbuttonright VOIR AUSSI Tutoriel iOS : Création d'une application FireMonkey iOS FMX.StdCtrls.TButton FMX.Controls.TStyledControl.StyleLookup FMX.StdCtrls.TToolBar Embarcadero Technologies 40 TUTORIEL IOS : UTILISATION D'UN COMPOSANT CALENDRIER POUR SELECTIONNER UNE DATE DANS UNE APPLICATION IOS UTILISATION D'UN CALENDRIER DANS DES APPLICATIONS FIREMONKEY IOS FireMonkey utilise le composant TCalendarEdit pour encapsuler un composant Calendrier ou Sélecteur de date pour la plate-forme cible iOS : Vous pouvez facilement utiliser le composant TCalendarEdit en suivant les étapes ci-dessous : 1. Sélectionnez le composant TCalendarEdit dans la palette d'outils et déposez-le sur le Concepteur de fiches mobiles FireMonkey. Pour trouver le composant sur la palette d'outils, tapez les premiers caractères ("Cale") dans la zone de recherche ( ) : Dès qu'il a été déposé, le composant TCalendarEdit est visible dans le Concepteur de fiches mobiles. Embarcadero Technologies 41 2. Et voilà ! Exécutez l'application sur le simulateur iOS ou votre périphérique iOS connecté. Dès que vous touchez le composant TCalendarEdit, le contrôle Calendrier apparaît. Vous pouvez sélectionner une date. IMPLEMENTATION D'UN GESTIONNAIRE D'EVENEMENTS CORRESPONDANT AUX MODIFICATIONS UTILISATEUR RELATIVES A LA DATE Dès que l'utilisateur modifie la date, l'événement OnChange est déclenché. En réponse à l'action de l'utilisateur, vous pouvez implémenter un gestionnaire d'événements pour l'événement OnChange. Pour implémenter un gestionnaire d'événements OnChange : 1. Sélectionnez le composant TCalendarEdit. 2. Dans l’inspecteur d’objets, ouvrez la page Evénements et double-cliquez sur la zone vierge qui suit OnChange. 3. Ecrivez le code comme suit : procedure TForm25.CalendarEdit1Change(Sender: TObject); begin ShowMessage(FormatDateTime('dddddd', CalendarEdit1.Date)); end; Ce code provoque l'affichage d'un dialogue de message avec une date sélectionnée. La fonction FormatDateTime convertit la date sélectionnée au format spécifié (dans ce cas dddddd correspond au format date long) : Embarcadero Technologies 42 VOIR AUSSI Tutoriel iOS : Utilisation d'un composant Bouton avec différents styles dans une application iOS Tutoriel iOS : Utilisation de composants Zone de liste déroulante pour sélectionner des éléments dans une liste d'une application iOS Support date et heure Routines de conversion des types Embarcadero Technologies 43 TUTORIEL IOS : UTILISATION DE COMPOSANTS ZONE DE LISTE DEROULANTE POUR SELECTIONNER DES ELEMENTS DANS UNE LISTE D'UNE APPLICATION IOS IMPLEMENTATION D'UN SELECTEUR DANS DES APPLICATIONS FIREMONKEY IOS Sur la plate-forme iOS, FireMonkey encapsule le composant Sélecteur avec le composant TComboBox : Pour définir un sélecteur et la liste d'éléments à sélectionner : 1. Sélectionnez Fichier > Nouveau > Application mobile FireMonkey - Delphi > Application vide. 2. Sélectionnez le composant TComboBox dans la palette d'outils et déposez-le sur le Concepteur de fiches mobiles FireMonkey. Pour trouver TComboBox, tapez les premiers caractères ("Com") dans la zone de recherche de la palette d'outils : Embarcadero Technologies 44 3. Dès qu'il a été déposé, le composant TComboBox est visible dans le Concepteur de fiches. Cliquez avec le bouton droit sur le composant TComboBox et sélectionnez Editeur d'éléments... : 4. Pour définir des éléments, cliquez plusieurs fois sur Ajouter un élément. 5. Dans la vue Structure, sélectionnez ListBoxItem1 (le premier élément de la liste). 6. Dans l'inspecteur d'objets, modifiez la propriété Text de ListBoxItem1. Dans cet exemple qui traite des cinquante états des Etats-Unis, le premier élément de la liste est "Alabama". Embarcadero Technologies 45 7. Modifiez les autres éléments en spécifiant Alaska, Arizona, Arkansas, California, Colorado, etc. 8. Exécutez l'application sur la plate-forme cible Simulateur iOS ou Périphérique iOS. Dès que vous touchez le composant TComboBox, le contrôle Sélecteur apparaît. Vous pouvez sélectionner un élément dans la liste. CONSTRUCTION D'UNE LISTE D'ELEMENTS EN UTILISANT LE CODE La méthode Add vous permet de construire une liste d'éléments en utilisant le code : procedure TForm27.FormCreate(Sender: TObject); begin ComboBox1.Items.Add('Alabama'); ComboBox1.Items.Add('Alaska'); ComboBox1.Items.Add('Arizona'); ComboBox1.Items.Add('Arkansas'); ComboBox1.Items.Add('California'); // Other states can be listed here ComboBox1.Items.Add('Virginia'); ComboBox1.Items.Add('Washington'); ComboBox1.Items.Add('West Virginia'); ComboBox1.Items.Add('Wisconsin'); ComboBox1.Items.Add('Wyoming'); end; Embarcadero Technologies 46 AFFICHAGE D'UN ELEMENT SPECIFIQUE L'élément actuellement sélectionné est spécifié par la propriété ItemIndex. ItemIndex est une valeur entière spécifiée en utilisant un index de base zéro (ce qui signifie que le premier élément est zéro). Pour afficher la liste avec le cinquième élément sélectionné ("California" dans le code exemple suivant), spécifiez ItemIndex comme suit : procedure TForm27.FormCreate(Sender: TObject); begin ComboBox1.Items.Add('Alabama'); ComboBox1.Items.Add('Alaska'); ComboBox1.Items.Add('Arizona'); ComboBox1.Items.Add('Arkansas'); ComboBox1.Items.Add('California'); // Other states can be listed here // Index of 5th item is "4" ComboBox1.ItemIndex := 4; end; Si vous ne connaissez pas la valeur de l'index, vous pouvez la trouver en utilisant la méthode IndexOf comme suit : procedure TForm27.FormCreate(Sender: TObject); begin ComboBox1.Items.Add('Alabama'); ComboBox1.Items.Add('Alaska'); ComboBox1.Items.Add('Arizona'); ComboBox1.Items.Add('Arkansas'); ComboBox1.Items.Add('California'); // Other states can be listed here ComboBox1.ItemIndex := ComboBox1.Items.IndexOf('California'); end; Embarcadero Technologies 47 IMPLEMENTATION D'UN GESTIONNAIRE D'EVENEMENTS CORRESPONDANT A LA SELECTION EFFECTUEE PAR L'UTILISATEUR Après que l'utilisateur ait sélectionné un élément, l'événement OnChange est déclenché. En réponse à l'action de l'utilisateur, vous pouvez implémenter un gestionnaire d'événements pour l'événement OnChange. Pour implémenter un gestionnaire d'événements OnChange : 1. Sélectionnez le composant TComboBox. 2. Dans l’inspecteur d’objets, ouvrez la page Evénements et double-cliquez sur la zone vierge qui suit OnClick. 3. L'éditeur de code s'ouvre. Ecrivez le code comme suit : procedure TForm27.CalendarEdit1Change(Sender: TObject); begin ShowMessage(Format('Item %s at Index %d was selected. ', [ComboBox1.Selected.Text, ComboBox1.ItemIndex])); end; Ce gestionnaire d'événements affiche un dialogue de message indiquant l'élément qui a été sélectionné. Embarcadero Technologies 48 La fonction Format renvoie une chaîne formatée composée d'une chaîne de format et d'un tableau d'arguments : VOIR AUSSI Tutoriel iOS : Utilisation d'un composant Calendrier pour sélectionner une date dans une application iOS Tutoriel iOS : Utilisation des composants Onglet pour afficher des pages dans une application iOS Développement d'applications mobiles iOS Développement d'applications Mac OS X Embarcadero Technologies 49 TUTORIEL IOS : UTILISATION DU COMPOSANT NAVIGATEUR WEB DANS UNE APPLICATION IOS UTILISATION DU COMPOSANT NAVIGATEUR WEB DANS DES APPLICATIONS FIREMONKEY IOS Sur la plate-forme iOS, FireMonkey encapsule le composant Navigateur Web en tant que composant TWebBrowser. Cette rubrique décrit comment créer une application Navigateur Web FireMonkey simple pour iOS. Embarcadero Technologies 50 ETAPE 1 : CONCEPTION DE L'INTERFACE UTILISATEUR 1. Sélectionnez Fichier > Nouveau > Application mobile FireMonkey - Delphi > Application vide. 2. Sélectionnez le composant TToolBar dans la Palette d'outils et déposez-le sur le Concepteur de fiches mobiles FireMonkey. Pour trouver TToolBar, tapez les premiers caractères (comme "tool") dans la zone Chercher de la Palette d'outils : 3. Dès qu'il a été déposé, le composant TToolBar est visible en haut du Concepteur de fiches mobiles : 4. Sélectionnez le composant TButton dans la Palette d'outils et déposez-le sur le composant ToolBar. 5. Sélectionnez le composant Bouton dans le Concepteur de fiches mobiles, puis sélectionnez priortoolbuttonbordered pour la propriété StyleLookup dans l'inspecteur d'objets. La valeur priortoolbuttonbordered de la propriété StyleLookup du TButton ajoute un libellé de bouton Back dans le style iOS : Pour plus de détails sur la sélection d'un style dans les applications FireMonkey iOS, voir Tutoriel iOS : Utilisation d'un composant Bouton avec différents styles dans une application iOS. Embarcadero Technologies 51 6. Sélectionnez le composant TEdit dans la Palette d'outils et déposez-le sur le composant ToolBar. Assurez-vous que la taille du contrôle de saisie est suffisamment large pour remplir la zone du ToolBar : 7. Sélectionnez le composant TWebBrowser dans la Palette d'outils et déposez-le sur la fiche. 8. Sélectionnez le composant Navigateur Web sur le Concepteur de fiches mobiles, accédez à l'inspecteur d'objets et sélectionnez alClient pour la propriété Align. Une fois ces étapes accomplies, la fiche doit avoir l'apparence de la figure suivante : Embarcadero Technologies 52 ETAPE 2 : ECRITURE D'UN GESTIONNAIRE D'EVENEMENTS PROVOQUANT L'OUVERTURE D'UNE PAGE WEB LORSQUE L'UTILISATEUR CHANGE D'URL DANS LE CONTROLE DE SAISIE A la différence de la plate-forme de bureau, les périphériques mobiles utilisent le clavier virtuel pour entrer du texte comme illustré sur l'image suivante. L'utilisateur peut terminer l'action en cliquant soit sur "Done" ou "Return". FireMonkey fournit de nombreux types de gestionnaires d'événement pour couvrir la plupart des actions entreprises par les utilisateurs. Après que le bouton "Done" ait été sélectionné, le framework FireMonkey envoie un événement OnChange au contrôle TEdit. D'autre part, il n'y a pas d'événement spécifique pour le bouton "Return". Dans cette section, nous allons implémenter des gestionnaires d'événement pour supporter les deux scénarios. Embarcadero Technologies 53 IMPLEMENTATION D'UNE METHODE COMMUNE POUR OUVRIR UNE PAGE WEB Avant d'implémenter des gestionnaires d'événement, commencez par implémenter une méthode commune pour ouvrir une page Web basée sur la propriété Text du contrôle de saisie. 1. Dans l'éditeur de code, créez la nouvelle ligne suivante : procedure OpenURL; next to { Private declarations } 2. Appuyez sur CTRL+MAJ+C pour créer un espace de réservation à la fin du fichier : 3. Implémentez la méthode OpenURL comme dans l'extrait de code suivant : Embarcadero Technologies 54 IMPLEMENTATION D'UN GESTIONNAIRE D'EVENEMENTS POUR L'EVENEMENT ONCHANGE 1. Dans le Concepteur de fiches mobiles, sélectionnez le composant de saisie, puis dans l'inspecteur d'objets (onglet Evénements), double-cliquez sur la zone vide suivant l'événement OnChange pour créer le gestionnaire d'événement. L'inspecteur d'objets crée un nouveau gestionnaire d'événements nommé Edit1Change : 2. Terminez le gestionnaire d'événements en ajoutant le code suivant : IMPLEMENTATION D'UN GESTIONNAIRE D'EVENEMENTS POUR SUPPORTER LA TOUCHE ENTREE Il n'y a pas d'événement spécifique qui soit défini pour la touche Entrée. Toutefois, vous pouvez toujours contrôler de tels événements via l'événement OnKeyDown. OnKeyDown fournit des informations sur la touche appuyée via plusieurs paramètres dans son gestionnaire d'événement. Vous pouvez implémenter cet événement comme suit : Embarcadero Technologies 55 IMPLEMENTATION D'UN GESTIONNAIRE D'EVENEMENTS POUR LE BOUTON BACK Pour implémenter un bouton Back pour votre navigateur Web, il vous suffit d'appeler la méthode GoBack sur le composant Navigateur Web : Le comportement de base est maintenant implémenté pour cette application Navigateur Web. Essayez d'exécuter l'application sur le simulateur iOS ou sur votre périphérique iOS. ETAPE 3 : SELECTION DU CLAVIER APPROPRIE POUR L'APPLICATION NAVIGATEUR WEB Une fois que vous aurez exécuté votre application Navigateur Web, vous réaliserez sans doute que le clavier virtuel n'est pas optimisé. iOS propose plusieurs claviers virtuels comme suit : vktAlphabet vktDefault vktEmailAddress vktNamePhonePad vktNumberPad vktNumbersAnd Punctuation vktPhonePad vktURL Embarcadero Technologies 56 Sélectionnez vktURL comme clavier virtuel dans la propriété KeyboardType du contrôle de saisie : VOIR AUSSI Tutoriel iOS : Utilisation de composants Zone de liste déroulante pour sélectionner des éléments dans une liste d'une application iOS Tutoriel iOS : Utilisation des composants Onglet pour afficher des pages dans une application iOS TWebBrowser TToolBar TButton TEdit KeyboardType StyleLookup Embarcadero Technologies 57 TUTORIEL IOS : UTILISATION DES COMPOSANTS ONGLET POUR AFFICHER DES PAGES DANS UNE APPLICATION IOS ONGLETS DANS LES APPLICATIONS FIREMONKEY IOS Les onglets sont définis par FMX.TabControl.TTabControl, qui est un conteneur qui peut contenir plusieurs pages d'onglets : Chaque page d'onglet peut contenir n'importe quel contrôle utilisé comme élément de l'interface utilisateur. Vous pouvez masquer l'onglet de ces pages et changer de page sans afficher les onglets. Pour chaque onglet, vous pouvez spécifier des icônes prédéfinies ainsi qu'une icône personnalisée et un libellé de texte. Vous pouvez également placer les onglets en haut ou en bas du contrôle. CONCEPTION DE PAGES D'ONGLETS EN UTILISANT LE CONCEPTEUR DE FICHES Pour créer des pages d'onglets dans votre application, utilisez le composant TTabControl en procédant comme suit : 1. Pour créer une application mobile HD FireMonkey, sélectionnez Fichier > Nouveau > Application mobile FireMonkey - Delphi > Application vide. Utilisez la plate-forme cible par défaut pour iPhone (Simulateur iOS). 2. Sélectionnez un TTabControl dans la Palette d'outils : Embarcadero Technologies 58 3. Après avoir déposé le TTabControl, un TabControl vide apparaît sur le Concepteur de fiches mobiles FireMonkey : 4. Typiquement, les applications qui possèdent un TabControl utilisent le plein écran pour afficher les pages. Pour cela, vous devez changer l'alignement par défaut du TabControl. Dans l'inspecteur d'objets, changez la propriété Align du TabControl sur alClient : Embarcadero Technologies 59 5. Cliquez avec le bouton droit sur le TabControl et sélectionnez Editeur d'éléments... dans le menu contextuel : 6. Cliquez sur Ajouter un élément trois fois afin d'avoir trois instances de TabItem à cet emplacement. Fermez la boîte de dialogue. 7. Dans le Concepteur de fiches mobiles FireMonkey, sélectionnez le premier TabItem et changez sa propriété StyleLookup en tabitembookmarks : Embarcadero Technologies 60 8. Vous pouvez placer n'importe quel composant sur chacune des pages. Pour passer à une autre page, cliquez simplement sur l'onglet voulu dans le Concepteur de fiches ou changez la propriété ActiveTab dans l'inspecteur d'objets : 9. Pour changer l'emplacement des onglets, sélectionnez la propriété TabPosition pour le composant TabControls. Pour chaque composant, vous pouvez sélectionner l'une quelconque des valeurs suivantes de la propriété TabPosition dans l'inspecteur d'objets : Embarcadero Technologies 61 tpTop Les onglets sont affichés en haut. tpBottom Les onglets sont affichés en bas. Embarcadero Technologies tpDots tpNone Aucun onglet n'est affiché. Toutefois, des points ou des points de suspension sous la forme ([...]) sont affichés pour signaler l'existence de pages supplémentaires. Aucun onglet ni aucun point n'est affiché à l'exécution, même s'il est visible à la conception. Les pages peuvent être changées uniquement via le code ou une action. 62 UTILISATION D'ICONES PERSONNALISEES POUR LES ONGLETS Vous pouvez utiliser des icônes personnalisées ainsi que du texte personnalisé pour les pages d'onglets en procédant comme suit : 1. Placez un TabControl, définissez sa propriété d'alignement Align, et dotezle de plusieurs onglets : 2. Sélectionnez un onglet puis le bouton points de suspension dans le champ Bitmap [...] de la propriété CustomIcon du TTabItem dans l'inspecteur d'objets : 3. Sélectionnez Modifier... dans le menu déroulant : 4. Dans l'éditeur de bitmaps, cliquez sur le bouton Charger... puis sélectionnez un fichier PNG. La taille recommandée est 30x30 pixels pour une résolution normale et 60x60 pixels pour une haute résolution (vous définirez l'icône BitmapHiRes lors de la prochaine étape) : Embarcadero Technologies 63 5. Fermez l'éditeur de bitmaps. Dans l'inspecteur d'objets, sélectionnez l'icône que vous voulez utiliser en haute résolution dans le champ BitmapHiRes de CustomIcon. 6. Sélectionnez tabitemcustom pour la propriété StyleLookup dans l'inspecteur d'objets. 7. Dans la propriété Text, changez le texte de l'onglet. Embarcadero Technologies 64 Les glyphes personnalisés utilisés dans ce tutoriel sont disponibles dans votre répertoire $(BDS)\Images\GlyFX. Dès que vous avez défini une icône personnalisé, le framework FireMonkey génère une image sélectionnée et une image non sélectionnée (estompée) à partir du fichier .png spécifié. Cette transformation est effectuée en utilisant le canal alpha des données bitmap. Par exemple : Image d'origine Embarcadero Technologies Image sélectionnée Image non sélectionnée 65 DEFINITION DE CONTROLES DANS UN TABCONTROL Comme nous l'avons vu, chaque page d'onglets peut contenir un nombre quelconque de contrôles, y compris un autre TabControl. Dans ce cas, vous pouvez facilement gérer et parcourir les différentes pages d'onglets dans la vue Structure : Embarcadero Technologies 66 CHANGEMENT DE PAGE A L'EXECUTION PAR L'INTERACTION DE L'UTILISATEUR EN TOUCHANT L'ONGLET Si les onglets sont visibles (c'est-à-dire lorsque la propriété TabPosition est définie sur toute valeur autre que tpNone), l'utilisateur final peut toucher les onglets pour passer d'une page à l'autre. PAR LES ACTIONS ET UNE LISTE D'ACTIONS Une action correspond à un ou plusieurs éléments de l'interface utilisateur, comme les commandes de menu, les boutons de barre d'outils et les contrôles. Les actions ont deux fonctions : Elles représentent les propriétés communes aux éléments de l'interface utilisateur, par exemple si un contrôle est activé ou si une case à cocher est sélectionnée. Les actions répondent quand un contrôle est déclenché, par exemple quand l'utilisateur de l'application clique sur un bouton ou choisit un élément de menu. Voici les étapes à suivre pour permettre à un utilisateur de se déplacer de page en page en cliquant sur un bouton : 1. Dans une application mobile FireMonkey, placez un TabControl et dotezle de quelques éléments onglets (TabItem1, TabItem2 et TabItem3). 2. Depuis la Palette d'outils, ajoutez un TButton à la fiche, puis un composant ActionList : Embarcadero Technologies 67 3. Sélectionnez le composant Bouton dans l'inspecteur d'objets, puis Action | Nouvelle action standard | Onglet > TChangeTabAction dans le menu déroulant. Dès que l'utilisateur clique sur ce bouton, l'action que vous venez de définir est réalisée (changement de page d’onglet) : Embarcadero Technologies 68 4. Sélectionnez ChangeTabAction1 dans la vue Structure, puis sélectionnez TabItem2 pour la propriété Tab dans l'inspecteur d'objets. En liant TabItem2, cette action entraîne le changement de page vers TabItem2 : Embarcadero Technologies 69 5. Consécutivement à l'étape précédente, le libellé du bouton (la propriété Text) est automatiquement remplacé par "Go To Security", car le libellé de TabItem2 est "Security" dans notre exemple. Changez la taille du bouton pour que le nouveau libellé puisse s'afficher ou changez la propriété CustomText du composant ChangeTabAction1 comme illustré ci-dessous : 6. ChangeTabAction supporte également l'animation Glissement (Slide) pour indiquer une transition entre chaque page. Pour l'utiliser, définissez la propriété Transition sur ttSlide : Embarcadero Technologies 70 PAR LE CODE SOURCE Vous pouvez utiliser l'une quelconque des trois méthodes suivantes pour changer la page d'onglet active dans votre code source : Assignez une instance de TTabItem à la propriété ActiveTab : TabControl1.ActiveTab := TabItem1; Changez la valeur de la propriété TabIndex. La propriété TabIndex est une valeur entière à index de base zéro (vous pouvez spécifier un nombre entre 0 et TabControl1.TabCount - 1). TabControl1.TabIndex := 1; Si ChangeTabAction est définie, vous pouvez également exécuter une action à partir de votre code : // You can set the target at run time if it is not defined yet. ChangeTabAction1.Tab := TabItem2; // Call the action ChangeTabAction1.Execute; VOIR AUSSI Tutoriel iOS : Utilisation d'un composant Bouton avec différents styles dans une application iOS Tutoriel iOS : Utilisation du composant Navigateur Web dans une application iOS Tutoriel iOS : Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS Embarcadero Technologies 71 TUTORIEL IOS : UTILISATION DES COMPOSANTS ZONE DE LISTE POUR AFFICHER UNE VUE TABLE DANS UNE APPLICATION IOS UTILISATION DES COMPOSANTS ZONE DE LISTE POUR AFFICHER UNE VUE TABLE DANS UNE APPLICATION IOS Sur la plate-forme iOS, FireMonkey utilise le composant FMX.ListBox.TListBox pour présenter une vue Table dans le style iOS, comme ces zones de liste : Ce tutoriel décrit les étapes élémentaires relatives à la construction d'éléments pour une vue Table dans votre application FireMonkey iOS. Embarcadero Technologies 72 CREATION DES ELEMENTS SUR LE COMPOSANT ZONE DE LISTE 1. Sélectionnez Fichier > Nouveau > Application mobile FireMonkey - Delphi > Application vide. 2. Sélectionnez le composant TListBox dans la palette d'outils et déposez-le sur le Concepteur de fiches mobiles FireMonkey. Pour trouver TListBox, tapez les premiers caractères (comme "tlist") dans la zone Chercher de la Palette d'outils : 3. Sélectionnez le composant TListBox sur le Concepteur de fiches mobiles, accédez à l'inspecteur d'objets et sélectionnez alClient pour la propriété Align : 4. Sur le Concepteur de fiches mobiles FireMonkey, cliquez avec le bouton droit sur le composant TListBox, et sélectionnez Editeur d'éléments : Embarcadero Technologies 73 5. Sur le Concepteur d'éléments, cliquez plusieurs fois sur le bouton Ajouter un élément pour ajouter plusieurs éléments à la zone de liste : 6. Fermez le Concepteur d'éléments. Vous pouvez maintenant trouver les éléments de zone de liste sur le composant TListBox. Par exemple : Embarcadero Technologies 74 AJOUT D'UN EN-TETE Vous pouvez définir un en-tête sur le composant TListBox en suivant les étapes cidessous : 1. Sur le concepteur de fiches mobiles FireMonkey, cliquez avec le bouton droit sur le composant TListBox, et sélectionnez Ajouter un élément > TListBoxHeader : 2. Sur la palette d'outils, sélectionnez le composant TLabel et déposez-le audessus du composant TListBoxHeader que vous venez d'ajouter : Embarcadero Technologies 75 3. Dans l'inspecteur d'objets, modifiez les propriétés du composant TLabel comme suit : Propriété Valeur Align alClient StyleLookup toollabel TextAlign taCenter Text (Valeur texte de votre choix) AJOUT D'UN GROUPE EN-TETE/PIED A LA LISTE Vous pouvez définir un en-tête et un pied de groupe pour les éléments de TListBox en procédant comme suit : 1. Sur le concepteur de fiches mobiles FireMonkey, cliquez avec le bouton droit sur le composant TListBox, et sélectionnez Editeur d'éléments. 2. Sur le Concepteur d'élément, sélectionnez TListBoxGroupHeader dans la liste déroulante, puis sélectionnez Ajouter un élément : Embarcadero Technologies 76 3. Sélectionnez TListBoxGroupFooter dans la liste déroulante, puis sélectionnez Ajouter un élément. 4. Sélectionnez ListBoxGroupHeader1 dans la liste d'éléments et cliquez sur le bouton Haut plusieurs fois jusqu'à ce que cet élément devienne le premier de la liste : 5. Fermez la boîte de dialogue. Vous avez maintenant un en-tête et un pied de groupe pour le composant TListBox. AFFICHAGE DES ELEMENTS DE LISTE SOUS FORME D'ELEMENTS GROUPES SEPARES Les éléments d'une zone de liste peuvent être affichés sous la forme d'une liste simple ou d'une liste groupée. Ce choix est contrôlé par les propriétés GroupingKind et StyleLookup comme affiché sur le graphique suivant : Affichage des éléments sous la forme d'une liste simple Affichage des éléments sous la forme d'une liste groupée gsPlain = Valeur de la propriété GroupingKind gsGrouped = Valeur de la propriété GroupingKind listboxstyle = Valeur de la propriété StyleLookup transparentlistboxstyle = Valeur de la propriété StyleLookup Embarcadero Technologies 77 Vous pouvez sélectionner l'un ou l'autre des styles pour votre composant TListBox dans l'inspecteur d'objets. AJOUT D'UNE CASE A COCHER OU D'UN AUTRE ACCESSOIRE A UN ELEMENT DE ZONE DE LISTE Chaque élément d'un TListBox peut utiliser un accessoire tel qu'une case à cocher via la propriété ItemData.Accessory. L'image suivante affiche la valeur que vous pouvez affecter à ItemData.Accessory ainsi que l'accessoire ayant été affecté : Vous pouvez sélectionner la propriété Accessory dans l'inspecteur d'objets lorsque l'élément de zone de liste est sélectionné dans le Concepteur de fiches. Embarcadero Technologies 78 AJOUT D'UNE ICONE A UN ELEMENT DE ZONE DE LISTE Chaque élément d'un composant Zone de liste peut contenir des données bitmap, comme une icône, via la propriété ItemData.Bitmap : Vous pouvez sélectionner la propriété Bitmap dans l'inspecteur d'objets lorsque l'élément de zone de liste est sélectionné dans le Concepteur de fiches. AJOUT D'INFORMATIONS DE DETAIL A UN ELEMENT Vous pouvez ajouter des informations texte supplémentaires pour chaque élément du composant Zone de liste. Spécifiez le texte supplémentaire dans la propriété ItemData.Detail et sélectionnez l'emplacement du texte de détail via la propriété StyleLookup comme affiché dans le tableau suivant : Propriété StyleLookup Apparence listboxitemnodetail listboxitembottomdetail listboxitemrightdetail listboxitemleftdetail Embarcadero Technologies 79 AJOUT D'ELEMENTS A UNE ZONE DE LISTE A PARTIR DU CODE Pour ajouter des éléments réguliers à une zone de liste, il vous suffit d'appeler la méthode Items.Add comme dans le code suivant : ListBox1.Items.Add('Text to add'); Si vous voulez créer des éléments autres qu'un élément simple, ou contrôler d'autres propriétés, vous pouvez créer d'abord une instance de l'élément puis l'ajouter à la zone de liste. Le code suivant ajoute des éléments à une zone de liste, comme dans l'image suivante : Embarcadero Technologies 80 procedure TForm40.FormCreate(Sender: TObject); var c: Char; i: Integer; Buffer: String; ListBoxItem : TListBoxItem; ListBoxGroupHeader : TListBoxGroupHeader; begin ListBox1.BeginUpdate; for c := 'a' to 'z' do begin // Add header ('A' to 'Z') to the List ListBoxGroupHeader := TListBoxGroupHeader.Create(ListBox1); ListBoxGroupHeader.Text := UpperCase(c); ListBox1.AddObject(ListBoxGroupHeader); // Add items ('a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'c', ...) to the list for i := 1 to 3 do begin // StringOfChar returns a string with a specified number of repeating characters. Buffer := StringOfChar(c, i); // Simply add item // ListBox1.Items.Add(Buffer); // or, you can add items by creating an instance of TListBoxItem by yourself ListBoxItem := TListBoxItem.Create(ListBox1); ListBoxItem.Text := Buffer; // (aNone=0, aMore=1, aDetail=2, aCheckmark=3) ListBoxItem.ItemData.Accessory := TListBoxItemData.TAccessory(i); ListBox1.AddObject(ListBoxItem); end; end; ListBox1.EndUpdate; end; Embarcadero Technologies 81 AJOUT D'UNE ZONE DE RECHERCHE Vous pouvez ajouter une zone de recherche à une zone de liste. La zone de recherche permet aux utilisateurs de réduire une sélection à partir d'une longue liste comme dans les images suivantes : Pour ajouter une zone de recherche au composant Zone de liste, cliquez avec le bouton droit sur le composant TListBox et sélectionnez simplement Ajouter un élément > TSearchBox dans le menu contextuel : Embarcadero Technologies 82 VOIR AUSSI FMX.ListBox.TListBox Tutoriel iOS : Utilisation d'un composant Bouton avec différents styles dans une application iOS Tutoriel iOS : Utilisation du composant Navigateur Web dans une application iOS Tutoriel iOS : Utilisation des composants Onglet pour afficher des pages dans une application iOS Embarcadero Technologies 83 TUTORIEL IOS : UTILISATION DE LA DISPOSITION POUR AJUSTER DIFFERENTES TAILLES DE FICHES OU ORIENTATIONS DANS UNE APPLICATION IOS Ce tutoriel décrit la stratégie qui consiste à utiliser une fiche commune pour différents facteurs de forme (comme l'iPhone et l'iPad) sans avoir besoin d'utiliser des fiches différentes pour chaque facteur de forme. Dans le Concepteur de fiches mobiles FireMonkey, vous pouvez prévisualiser l'interface utilisateur sans qu'il soit nécessaire d'exécuter l'application sur un périphérique ; il vous suffit de choisir un autre périphérique ou de changer l'orientation dans la liste déroulante située dans le coin supérieur droit : CHAQUE COMPOSANT FIREMONKEY PEUT AVOIR UN PROPRIETAIRE, UN PARENT ET DES ENFANTS Premièrement, chaque composant FireMonkey a le concept de Propriétaire, Parent et Enfants. Si vous placez un composant sur une fiche, la fiche devient le propriétaire et le parent du composant. Si vous ajoutez des composants (tels qu'un Bouton, un Libellé, etc.) dans d'autres composants (par exemple une Barre d'outils), la Barre d'outils devient le parent et le propriétaire du Bouton, du Libellé et des autres composants. Cette relation parent-enfant est représentée dans la vue arborescente de la vue Structure. La disposition d'un enfant est définie en tant que valeur relative à son parent. Dans la figure suivante, Label1 est l'enfant de Toolbar1 et la disposition de Label1 est relative à Toolbar1. Embarcadero Technologies 84 UTILISATION DES PROPRIETES COMMUNES RELATIVES A LA DISPOSITION D'UN COMPOSANT FIREMONKEY UTILISATION DE LA PROPRIETE ALIGN La propriété Align d'un contrôle détermine s'il est automatiquement repositionné et/ou redimensionné le long des quatre côtés ou du centre de son parent, initialement et au fur et à mesure que le parent est redimensionné. La valeur par défaut de la propriété Align est alNone, ce qui signifie qu'aucun calcul automatique n'est effectué : le contrôle reste à son emplacement. Les valeurs typiques de la propriété Align sont comme suit (le bleu ciel indique la zone relative à l'enfant) : alNone alTop alBottom alLeft alRight alCenter alClient Si vous utilisez l'une des valeurs alTop, alBottom, alLeft ou alRight de la propriété Align pour un composant, les propriétés Align des autres composants utilisent la zone restante. La taille et la forme de la zone restante (alClient) changent également en fonction de l'orientation du périphérique et du facteur de forme (iPhone ou iPad). Les images suivantes montrent la disposition en mode paysage (horizontal) et portrait (vertical) lorsque vous avez deux composants qui utilisent alTop et un composant qui utilise alClient. Embarcadero Technologies 85 UTILISATION DE LA PROPRIETE MARGINS Margins assure la séparation entre des contrôles positionnés automatiquement par un parent. Dans l'image suivante, le côté droit du composant (alClient) utilise la propriété Margins pour garantir un peu d'espace autour du composant. UTILISATION DE LA PROPRIETE PADDING Padding définit un espace à part sur l'intérieur de la zone de contenu du parent, comme les marges d'une page imprimée. Dans l'inspecteur d'objets, vous pouvez définir les valeurs (en pixels) de la propriété Padding : Left Right Bottom Top Dans l'image suivante, le composant parent (qui contient deux régions) utilise la propriété Padding pour garantir de l'espace à l'intérieur du composant parent : Embarcadero Technologies 86 UTILISATION DE LA PROPRIETE ANCHORS Les ancrages sont nécessaires quand un contrôle doit maintenir sa position à une certaine distance des bords de son parent, ou doit s'étirer tout en maintenant la distance originale entre ses bords et ceux de son parent. Les contrôles ancrés sont 'attachés' aux côtés des conteneurs, et aussi étirés si spécifié. Propriété Anchors pour le contrôle de saisie Si un contrôle de saisie est placé sur une barre d'outils, il est souhaitable de garder une distance fixe entre le bord droit du contrôle de saisie et le bord de la fiche (plus précisément de la barre d'outils). Les ancrages permettent de spécifier qu'un contrôle doit rester fixe en relation avec les côtés de ses parents. Si vous souhaitez que le contrôle de saisie garde la même relation positive avec la barre d'outils (son parent), vous pouvez définir la propriété Anchors sur akLeft, akTop, akRight. Lorsque la barre d'outils est redimensionnée, le contrôle de saisie est également redimensionné en fonction des paramètres de la propriété Anchors : Propriété Anchors pour un contrôle Bouton Si un contrôle Bouton est placé sur l'extrémité droite de la barre d'outils, il est souhaitable de garder la même distance entre le bord droit du contrôle Bouton et le bord de la fiche. Toutefois, il n'est pas souhaitable de garder la même distance entre le bord gauche du contrôle Bouton et le bord gauche de la fiche. Dans ce cas, vous pouvez définir la propriété Anchors sur akTop, akRight Embarcadero Technologies 87 (désélectionnez akLeft), afin que le contrôle Bouton conserve les mêmes distances avec la barre d'outils (le parent) pour Top et Right. UTILISATION DU COMPOSANT TLAYOUT TLayout, un composant non visible à l'exécution, peut être utilisé pour regrouper ses contrôles enfant afin qu'ils puissent être manipulés comme un tout. Par exemple, vous pouvez définir la visibilité d'un groupe de contrôles à un moment donné en définissant seulement la propriété Visible de la disposition. TLayout ne définit pas automatiquement les propriétés de ses enfants. Pour que les contrôles sélectionnés deviennent les enfants de TLayout, vous devez utiliser la vue Structure. Mettez en surbrillance les contrôles que vous voulez déplacer. Faites glisser ensuite le groupe de contrôles sur le contrôle qui sera le parent, puis déposez les contrôles à cet endroit. Dans la vue Structure, le groupe de contrôles apparaît maintenant comme l'enfant du nouveau parent : 1. Etat initial 2. Mettez en surbrillance les contrôles à déplacer 3. Faites glisser sur le parent Vous pouvez utiliser Align, Padding, Margins, Anchors et d'autres propriétés de TLayout pour définir la disposition d'une zone particulière. Vous pouvez utiliser le composant TLayout de la même façon qu'une balise DIV en HTML. Embarcadero Technologies 88 MANIPULATION D'UNE INTERFACE ENCOMBREE : UTILISATION DU COMPOSANT TVERTSCROLLBOX Généralement, il faut éviter d'avoir trop d'éléments dans une fiche, car cela oblige les utilisateurs à faire défiler l'interface utilisateur. Très souvent, le défilement peut être évité en utilisant un composant TabControl composé de plusieurs pages. Si vous devez placer beaucoup d'éléments sur votre fiche, vous pouvez utiliser un composant TVertScrollBox pour définir une zone de défilement comme décrit ci-dessous : 1. Sélectionnez Périphérique personnalisé sur le Concepteur de fiches mobiles FireMonkey. 2. Changez la taille du périphérique personnalisé en faisant glisser le bord du concepteur de façon à obtenir la forme et la taille voulues. 3. Déposez un composant TVertScrollBox et définissez sa propriété Align sur alClient. Le composant TVertScrollBox occupe la totalité de la zone client. 4. Localisez les composants sur le composant TVertScrollBox : Embarcadero Technologies 89 Vous pourrez faire défiler cette fiche à l'exécution par un mouvement de glissement sur l'interface utilisateur. VOIR AUSSI Tutoriel iOS : Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS Tutoriel iOS : Utilisation de détecteurs d'emplacement sur le périphérique iOS Tutoriel : Utilisation des dispositions FireMonkey Stratégies des dispositions FireMonkey Arrangement des contrôles FireMonkey Mouvements dans FireMonkey Embarcadero Technologies 90 TUTORIEL IOS : PRENDRE UNE PHOTO ET LA PARTAGER DANS UNE APPLICATION IOS Avant de commencer ce tutoriel, il est recommandé de lire et suivre le tutoriel suivant : Tutoriel iOS : Utilisation d'un composant Bouton avec différents styles dans une application iOS Ce tutoriel couvre les tâches typiques suivantes pour l'utilisation des photos dans une application iOS : Prendre une photo avec la caméra du périphérique iOS Utiliser une photo de la bibliothèque de photos du périphérique iOS Partage ou impression d'une photo Cette fonctionnalité est fournie sous la forme d'actions et vous devez écrire une seule ligne de code pour chaque tâche. Une action correspond à un ou plusieurs éléments de l'interface utilisateur, comme les commandes de menu, les boutons de barre d'outils et les contrôles. Les actions ont deux fonctions : Une action représente les propriétés communes aux éléments de l'interface utilisateur, par exemple si un contrôle est activé ou si une case à cocher est sélectionnée. Une action peut répondre quand un contrôle est déclenché, par exemple quand l'utilisateur clique sur un bouton ou choisit un élément de menu. Embarcadero Technologies 91 Dans ce tutoriel, vous apprendrez comment assigner des actions aux éléments de l'interface utilisateur (tels qu'un bouton) pour chaque fonctionnalité que vous voulez supporter. CONSTRUCTION DE L'INTERFACE UTILISATEUR POUR L'APPLICATION L'interface utilisateur de cette application exemple est plutôt simple, comme illustré dans l'image suivante : Placez les composants suivants sur le Concepteur de fiches : Composant TToolBar o Trois composants TButton. Chaque bouton utilise différentes icônes. o Définissez la propriété StyleLookup pour les trois boutons, respectivement sur cameratoolbuttonbordered, searchtoolbuttonbordered et actiontoolbuttonbordered. Composant TImage o Définissez la propriété Align sur alClient. Composant TActionList PRENDRE UNE PHOTO AVEC LA CAMERA DU PERIPHERIQUE IOS Vous pouvez définir une action pour prendre une photo à l'aide de la caméra du périphérique iOS en utilisant les étapes suivantes : 1. Sur le Concepteur de fiches, sélectionnez le bouton (pour prendre une photo). Embarcadero Technologies 92 2. Dans l'inspecteur d'objets, sélectionnez la liste déroulante de la propriété Action. 3. Sélectionnez Nouvelle action standard | Bibliothèque multimédia | TTakePhotoFromCameraAction : 4. Sur l'onglet Evénements, développez le nœud Action puis double-cliquez sur l'événement OnDidFinishTaking. 5. Ajoutez le code suivant au gestionnaire d'événements OnDidFinishTaking : procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap); begin Image1.Bitmap.Assign(Image); end; Ce code assigne une photo prise à partir de la caméra du périphérique iOS à la propriété Bitmap du composant TImage. UTILISATION D'UNE PHOTO DE LA BIBLIOTHEQUE DE PHOTOS DU PERIPHERIQUE IOS Vous pouvez définir une action pour utiliser une photo de la bibliothèque de photos avec les étapes suivantes : Embarcadero Technologies 93 1. Sur le Concepteur de fiches, choisissez le bouton que vous voulez utiliser (pour choisir une photo). 2. Dans l'inspecteur d'objets, cliquez sur la liste déroulante de la propriété Action et sélectionnez Nouvelle action standard | Bibliothèque multimédia | TTakePhotoFromLibraryAction. 3. Dans l'onglet Evénements, développez le nœud Action puis doublecliquez sur l'événement OnDidFinishTaking. 4. Ajoutez le code suivant au gestionnaire d'événements OnDidFinishTaking : procedure TForm1.TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap); begin Image1.Bitmap.Assign(Image); end; Le code ci-dessus assigne une photo prise dans la bibliothèque de photos à la propriété Bitmap du composant TImage. PARTAGE OU IMPRESSION D'UNE PHOTO A partir d'une application iOS, vous pouvez partager une photo sur les sites des réseaux sociaux (tels que Facebook et Twitter), envoyer la photo sur une imprimante, utiliser la photo comme pièce jointe à un e-mail, l'assigner aux contacts, et ainsi de suite. Ce service de partage multiple est appelé Fonctionnalité Feuille de partage et vous pouvez implémenter cette fonctionnalité en suivant les étapes ci-après : Embarcadero Technologies 94 1. Sur le Concepteur de fiches, sélectionnez un bouton (pour partager une photo). 2. Dans l'inspecteur d'objets, cliquez sur la liste déroulante de la propriété Action et sélectionnez Nouvelle action standard | Bibliothèque multimédia | ShowShareSheetAction. 3. Sur l'onglet Evénements, développez le nœud Action puis double-cliquez sur l'événement OnBeforeExecute. 4. Ajoutez le code suivant au gestionnaire d'événements OnBeforeExecute : procedure TForm1.ShowShareSheetAction1BeforeExecute(Sender: TObject); begin ShowShareSheetAction1.Bitmap.Assign(Image1.Bitmap); end; Le code ci-dessus assigne une photo sur le composant TImage pour la "fonctionnalité feuille de partage". Après la sélection de Facebook dans la liste des services, vous pouvez poster la photo sur Facebook avec votre commentaire : VOIR AUSSI Tutoriel iOS : Utilisation de détecteurs d'emplacement sur le périphérique iOS Tutoriel iOS : Utilisation du Centre de notifications sur le périphérique iOS Actions FireMonkey FMX.StdCtrls.TButton FMX.Objects.TImage FMX.MediaLibrary http://appleinsider.com/articles/12/02/16/share_sheets_twitter_integration _to_make_mountain_lion_more_social/ Embarcadero Technologies 95 TUTORIEL IOS : UTILISATION DE DETECTEURS D'EMPLACEMENT SUR LE PERIPHERIQUE IOS Avant de commencer ce tutoriel, il est recommandé de lire et suivre les tutoriels suivants : Tutoriel iOS : Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS Tutoriel iOS : Utilisation du composant Navigateur Web dans une application iOS Tutoriel iOS : Utilisation de la disposition pour ajuster différentes tailles de fiches ou orientations dans une application iOS Ce tutoriel décrit les étapes élémentaires pour localiser votre périphérique iOS (en utilisant la latitude et la longitude) et pour utiliser le Géocodage inversé pour convertir une adresse lisible, comme sur l'image suivante : Embarcadero Technologies 96 CONCEPTION DE L'INTERFACE UTILISATEUR Cette application de démonstration est conçue avec deux principaux composants : un TListBox (sur le côté gauche) et un TWebBrowser. Dans le TListBox, définissez la propriété Align sur alLeft pour réserver le côté gauche de l'interface utilisateur. Puis créez les sous-composants suivants sous la zone de liste : o un composant TListBoxHeader avec les sous-composants suivants : un composant TLabel pour afficher le titre "Location Demo" un composant Switch (Switch1) pour sélectionner l'activation/désactivation de TLocationSensor o un TListBoxGroupHeader avec le texte "Your Location" o un TListBoxItem ayant le nom "ListBoxItemLatitude" et le texte "Latitude" o un TListBoxItem ayant le nom "ListBoxItemLongitude" et le texte "Longitude" o un TListBoxGroupHeader ayant le texte "Current Address" o un TListBoxItem ayant le nom "ListBoxItemAdminArea" et le texte "AdminArea" o un TListBoxItem ayant le nom "ListBoxItemCountryCode" et le texte "CountryCode" o un TListBoxItem ayant le nom "ListBoxItemCountryName" et le texte "CountryName" o un TListBoxItem ayant le nom "ListBoxItemFeatureName" et le texte "FeatureName" o un TListBoxItem ayant le nom "ListBoxItemLocality" et le texte "Locality" Embarcadero Technologies 97 un TListBoxItem ayant le nom "ListBoxItemPostalCode" et le texte "PostalCode" o un TListBoxItem ayant le nom "ListBoxItemSubAdminArea" et le texte "SubAdminArea" o un TListBoxItem ayant le nom "ListBoxItemSubLocality" et le texte "SubLocality" o un TListBoxItem ayant le nom "ListBoxItemSubThoroughfare" et le texte "SubThoroughfare" o un TListBoxItem ayant le nom "ListBoxItemThoroughfare" et le texte "Thoroughfare" un composant TWebBrowser (WebBrowser1) pour afficher la page Web (Google Maps). Définissez la propriété Align sur alClient. o Après avoir créé ces composants, sélectionnez tous les éléments TListBoxItem et sélectionnez ensuite listboxitemleftdetail dans la propriété StyleLookup. TListBoxItem peut ainsi afficher à la fois un libellé et du texte détaillé. LE DETECTEUR D'EMPLACEMENT Le détecteur d'emplacement est encapsulé par le composant TLocationSensor. TLocationSensor déclenche un événement OnLocationChanged lorsque le périphérique détecte un mouvement. Vous pouvez régler la sensibilité de TLocationSensor en utilisant la propriété Distance. Si vous définissez la distance à "10", TLocationSensor déclenche un événement OnLocationChanged pour chaque déplacement de "10 mètres". LECTURE DES INFORMATIONS D'EMPLACEMENT (LATITUDE, LONGITUDE) A PARTIR DU COMPOSANT LOCATIONSENSOR Le composant TLocationSensor doit d'abord être activé pour être utilisé. Vous pouvez activer/désactiver TLocationSensor en fonction de votre saisie, comme un composant TSwitch ou d'autres événements Application. Voici un extrait de code illustrant comment contrôler TLocationSensor en fonction du changement de la valeur contenue dans le composant TSwitch : procedure TForm44.Switch1Switch(Sender: TObject); begin LocationSensor1.Active := Switch1.IsChecked; end; Embarcadero Technologies 98 Comme expliqué précédemment, TLocationSensor déclenche un événement OnLocationChanged lorsque vous déplacez le périphérique iOS. Vous pouvez afficher l'emplacement en cours (Latitude et Longitude) en utilisant des paramètres avec ce gestionnaire d'événements, comme suit : procedure TForm44.LocationSensor1LocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); begin // Show current location ListBoxItemLatitude.ItemData.Detail := NewLocation.Latitude.ToString; ListBoxItemLongitude.ItemData.Detail := NewLocation.Longitude.ToString; end; AFFICHAGE DE L'EMPLACEMENT EN COURS EN UTILISANT GOOGLE MAPS VIA UN COMPOSANT TWEBBROWSER Comme expliqué dans le Tutoriel iOS : Utilisation du composant Navigateur Web dans une application iOS, le composant TWebBrowser encapsule un navigateur Web pour iOS. Vous pouvez appeler Google Maps depuis le composant TWebBrowser en utilisant les paramètres d'URL suivants : https://maps.google.com/maps?q=(Latitude-value),(Longitudevalue)&output=embed Vous pouvez alors ajouter cette URL au gestionnaire d'événements que vous venez de créer, OnLocationChanged, en procédant comme suit : procedure TForm44.LocationSensor1LocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); var URLString: String; begin // code for previous step goes here // Show Map using Google Maps URLString := Format( 'https://maps.google.com/maps?q=%s,%s&output=embed', [NewLocation.Latitude.ToString, NewLocation.Longitude.ToString]); WebBrowser1.Navigate(URLString); end; Embarcadero Technologies 99 UTILISATION DU GEOCODAGE INVERSE TGeocoder est un objet qui encapsule le service de géocodage (ou de Géocodage inversé). Le Géocodage est le processus qui consiste à transformer des données géographiques, comme l'adresse et le code postal, en coordonnées géographiques. Le Géocodage inverse est le processus qui consiste à transformer des coordonnées géographiques en données géographiques comme l'adresse. Dans ce cas, vous devez utiliser TGeocoder pour effectuer le "géocodage inversé" de votre emplacement (en Latitude et Longitude) en informations d'adresse lisibles. Voici la séquence d'actions élémentaires relatives à TGeocoder : 1. Créer une instance de TGeocoder. 2. Définir un événement OnGeocodeReverse afin que vous puissiez par la suite recevoir l'événement. 3. Définir les données pour exécuter le "Géocodage inversé". 4. TGeocoder accède au service sur le réseau lui permettant de résoudre les informations d'adresse. 5. TGeocoder déclenche un événement OnGeocodeReverse. 6. Votre application iOS App reçoit les informations d'adresse via le paramètre de l'événement OnGeocodeReverse et met à jour l'interface utilisateur. Comme TGeocoder n'est pas un composant (c'est simplement une classe), vous devez définir ces étapes via votre code (il n'est pas possible de déposer un composant ou d'assigner un gestionnaire d'événements via l'inspecteur d'objets). Commencez par définir un nouveau champ "FGeocoder : TGeocoder" dans la section private de la fiche. Vous pouvez aussi définir une procédure "OnGeocodeReverseEvent" comme dans l'extrait de code suivant. Embarcadero Technologies 100 type TForm44 = class(TForm) // IDE defines visible (or non-visual) components here automatically private { Private declarations } FGeocoder: TGeocoder; procedure OnGeocodeReverseEvent(const Address: TCivicAddress); public { Public declarations } end; Après avoir défini ces deux lignes, accédez à la ligne de OnGeocodeReverseEvent et tapez CTRL+SHIFT+C. Cela a pour effet de créer la procédure suivante dans votre code (vous l'utiliserez plus tard) : procedure TForm44.OnGeocodeReverseEvent(const Address: TCivicAddress); begin end; Vous pouvez maintenant créer une instance de TGeocoder et la configurer avec des données en utilisant le code suivant. TGeocoder.Current donne le type de classe qui implémente le service de géocodage. Le code dans "TGeocoder.Current.Create" appelle le constructeur (Create) pour le type spécifié et l'enregistre dans le champ FGeocoder. Vous devez aussi spécifier un gestionnaire d'événements qui sera déclenché lorsque TGeocoder terminera le géocodage inversé. Assignez OnGeocodeReverseEvent (que vous venez de définir lors de l'étape précédente) à FGeocoder.OnGeocodeReverse. Pour finir, si vous avez réussi à créer une instance de TGeocoder et que TGeocoder n'est pas exécuté, appelez TGeocoder.GeocodeReverse avec les informations d'emplacement. Lorsque TGeocoder reçoit des données, l'événement OnGeocodeReverseEvent est déclenché. Embarcadero Technologies 101 procedure TForm44.LocationSensor1LocationChanged(Sender: TObject; const OldLocation, NewLocation: TLocationCoord2D); begin // code for previous steps goes here // Setup an instance of TGeocoder if not Assigned(FGeocoder) then begin if Assigned(TGeocoder.Current) then FGeocoder := TGeocoder.Current.Create; if Assigned(FGeocoder) then FGeocoder.OnGeocodeReverse := OnGeocodeReverseEvent; end; // Translate location to address if Assigned(FGeocoder) and not FGeocoder.Geocoding then FGeocoder.GeocodeReverse(NewLocation); end; AFFICHAGE D'UNE ADRESSE LISIBLE DANS LE COMPOSANT ZONE DE LISTE Comme décrit précédemment, lorsque le géocodage inversé est terminé, un événement OnGeocodeReverseEvent est déclenché. Assignez ensuite les propriétés dans le paramètre d'adresse TCivicAddress de façon à afficher des informations d'adresse lisibles dans les champs de la zone de liste : procedure TForm44.OnGeocodeReverseEvent(const Address: TCivicAddress); begin ListBoxItemAdminArea.ItemData.Detail := Address.AdminArea; ListBoxItemCountryCode.ItemData.Detail := Address.CountryCode; ListBoxItemCountryName.ItemData.Detail := Address.CountryName; ListBoxItemFeatureName.ItemData.Detail := Address.FeatureName; ListBoxItemLocality.ItemData.Detail := Address.Locality; ListBoxItemPostalCode.ItemData.Detail := Address.PostalCode; ListBoxItemSubAdminArea.ItemData.Detail := Address.SubAdminArea; ListBoxItemSubLocality.ItemData.Detail := Address.SubLocality; ListBoxItemSubThoroughfare.ItemData.Detail := Address.SubThoroughfare; ListBoxItemThoroughfare.ItemData.Detail := Address.Thoroughfare; end; Embarcadero Technologies 102 VOIR AUSSI Tutoriel iOS : Utilisation de la disposition pour ajuster différentes tailles de fiches ou orientations dans une application iOS Tutoriel iOS : Utilisation du Centre de notifications sur le périphérique iOS System.Sensors.TGeocoder FMX.Sensors.TLocationSensor Embarcadero Technologies 103 TUTORIEL IOS : UTILISATION DU CENTRE DE NOTIFICATIONS SUR LE PERIPHERIQUE IOS Ce tutoriel décrit les étapes élémentaires relatives à l'utilisation du Centre de notifications sur votre périphérique iOS. TROIS NOTIFICATIONS ELEMENTAIRES OU STYLES D'ALERTE Lorsque les utilisateurs définissent des notifications pour des applications sur les périphériques iOS, elles peuvent être transmises par les applications sous les trois styles élémentaires suivants. La bannière apparaît rapidement, mais l'alerte requiert que l'utilisateur la supprime. BADGE AFFICHE SUR L'ICONE D'APPLICATION BANNIERE DE NOTIFICATION SUR L'IPAD ALERTE DE NOTIFICATION CENTRE DE NOTIFICATIONS SUR L'IPAD L'image suivante illustre le Centre de notifications sur l'iPad. L'utilisateur peut faire dérouler la liste des notifications récentes : Embarcadero Technologies 104 ACCES AU SERVICE DE NOTIFICATIONS L'interface du service de notifications (IFMXNotificationCenter) est définie comme l'un des services de plate-forme de FireMonkey (TPlatformServices). Pour accéder au service de notifications, suivez les deux pas suivants : Ajoutez les deux unités suivantes à la clause uses si elles ne sont pas présentes : uses FMX.Platform, FMX.Notification; Exécutez une requête sur les services de plate-forme de FireMonkey en utilisant le code suivant : var NotificationService: IFMXNotificationCenter; begin if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then NotificationService := TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter) as IFMXNotificationCenter; // Use the Notification Service end; L'interface IFMXNotificationCenter fournit les services élémentaires pour utiliser le numéro de badge d'icône ainsi que la notification. Embarcadero Technologies 105 DEFINITION DU NUMERO DE BADGE D'ICONE A PARTIR DU CODE IFMXNotificationCenter comporte la méthode SetIconBadgeNumber qui permet de définir un numéro de badge d'icône : procedure TForm1.SerIconBadgeNumber; var NotificationService: IFMXNotificationCenter; begin if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then NotificationService := TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter) as IFMXNotificationCenter; // Reset Icon Badge Number if Assigned(NotificationService) then NotificationService.SetIconBadgeNumber(18); end; Une fois le numéro de badge d'icône défini sur 18, il est visible sur votre écran d'accueil iOS : Vous pouvez également réinitialiser le numéro de badge d'icône en utilisant la méthode ResetIconBadgeNumber : procedure TForm1.ResetIconBadgeNumber; var NotificationService: IFMXNotificationCenter; begin if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then NotificationService := TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter) as IFMXNotificationCenter; // Set Icon Badge Number if Assigned(NotificationService) then NotificationService.ResetIconBadgeNumber; end; Embarcadero Technologies 106 PLANIFICATION DES NOTIFICATIONS Vous pouvez également planifier les messages de notification en utilisant la méthode ScheduleNotification : Pour afficher un message de notification, vous devez créer une instance de la classe TNotification, puis définir le nom (l'identificateur) et le message : procedure TForm1.ScheduleNotification; var NotificationService: IFMXNotificationCenter; Notification: TNotification; begin if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then NotificationService := TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter) as IFMXNotificationCenter; if Assigned(NotificationService) then begin Notification := TNotification.Create; try Notification.Name := 'MyNotification'; Notification.AlertBody := 'Delphi for iOS is here!'; // Fired in 10 second Notification.FireDate := Now + EncodeTime(0,0,10,0); // Send notification in Notification Center NotificationService.ScheduleNotification(Notification); finally Notification.Free; end; end end; Une fois le message de notification défini, il apparaît sur votre écran d'accueil iOS : Embarcadero Technologies 107 MISE A JOUR OU ANNULATION D'UN MESSAGE DE NOTIFICATION Chaque message de notification planifié est identifié par la propriété Name de l'objet TNotification. Pour mettre à jour une notification planifiée, appelez simplement ScheduleNotification une nouvelle fois avec une instance de TNotification qui porte le même nom (propriété Name). Pour annuler une notification planifiée, vous pouvez simplement appeler la méthode CancelNotification avec l'identificateur que vous avez utilisé : procedure TForm1.CancelNotification; var NotificationService: IFMXNotificationCenter; begin if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then NotificationService := TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter) as IFMXNotificationCenter; if Assigned(NotificationService) then NotificationService.CancelNotification('MyNotification'); end; Embarcadero Technologies 108 PRESENTATION IMMEDIATE DU MESSAGE DE NOTIFICATION Vous pouvez également afficher le message de notification immédiatement en utilisant PresentNotification. Pour afficher un message de notification, vous devez créer une instance de la classe TNotification, puis définir le nom (l'identificateur) et le message : procedure TForm1.PresentNotification; var NotificationService: IFMXNotificationCenter; Notification: TNotification; begin if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then NotificationService := TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter) as IFMXNotificationCenter; if Assigned(NotificationService) then begin Notification := TNotification.Create; try Notification.Name := 'MyNotification'; Notification.AlertBody := 'Delphi for iOS is here!'; // Set Icon Badge Number as well Notification.ApplicationIconBadgeNumber := 18; // Show Notification Message NotificationService.PresentNotification(Notification); finally Notification.Free; end; end; end; BANNIERE DE NOTIFICATION OU ALERTE DE NOTIFICATION Par défaut, votre application affiche la bannière de notification : Bannière de notification sur l'iPad Alerte de notification Embarcadero Technologies 109 Pour utiliser une alerte de notification plutôt qu'une bannière de notification, l'utilisateur final doit changer le style de notification dans la page de configuration du Centre de notifications : Embarcadero Technologies 110 AJOUTER DES ACTIONS A L'ALERTE DE NOTIFICATION Vous pouvez aussi personnaliser une alerte en ajoutant un bouton Action. Pour personnaliser une action d'alerte, vous devez définir l'action dans la propriété AlertAction, puis définir la propriété HasAction sur True, comme suit : Notification := TNotification.Create; try Notification.Name := 'MyNotification'; Notification.AlertBody := 'Delphi for iOS is here!'; Notification.AlertAction := 'Code Now!'; Notification.HasAction := True; // Fired in 10 seconds Notification.FireDate := Now + EncodeTime(0,0,10,0); // Show Notification Message NotificationService.ScheduleNotification(Notification); finally Notification.Free; end; VOIR AUSSI Tutoriel iOS : Prendre une photo et la partager dans une application iOS Tutoriel iOS : Utilisation de détecteurs d'emplacement sur le périphérique iOS FMX.Notification.IFMXNotificationCenter Embarcadero Technologies 111 TUTORIEL IOS : UTILISATION DE INTERBASE TOGO DANS UNE APPLICATION IOS Avant de commencer ce tutoriel, il est recommandé de lire et suivre le tutoriel suivant : Tutoriel iOS : Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS Ce tutoriel décrit les étapes de base permettant de parcourir les données gérées par InterBase ToGo sur votre périphérique iOS à travers le framework dbExpress. UTILISATION DE DBEXPRESS POUR SE CONNECTER A LA BASE DE DONNEES dbExpress est un framework d'accès à la base de données très rapide, écrit en Delphi. RAD Studio fournit des pilotes pour la plupart des bases de données majeures, telles que InterBase, Oracle, DB2, SQL Server, MySQL, Firebird, SQLite et ODBC. Vous pouvez accéder à ces diverses bases de données en utilisant des procédures similaires à la procédure décrite ici. Embarcadero Technologies 112 Pour la plate-forme iOS, dbExpress supporte InterBase ToGo ainsi que SQLite. Ces produits de base de données peuvent s'exécuter sur les périphériques iOS. Pour les autres bases de données, telles que Oracle, vous devez disposer d'au moins une bibliothèque client. Sur les plates-formes Windows, la bibliothèque client est fournie en tant que DLL sur laquelle se connecter. Par conséquent, vous devez développer les applications en utilisant des technologies de niveau intermédiaire telles que DataSnap pour la connexion à ces produits de base de données à partir de périphériques iOS. Un autre tutoriel décrit comment se connecter à la base de données d'entreprise sans utiliser une bibliothèque client sur le périphérique iOS ; voir Tutoriel iOS : Connexion à une base de données d'entreprise depuis une application client iOS. CONCEPTION ET CONFIGURATION DE L'INTERFACE UTILISATEUR Ce tutoriel utilise un composant TListBox en tant qu'élément de l'interface utilisateur. Pour configurer un composant ListBox, suivez les étapes ci-après : 1. Pour créer une application mobile HD FireMonkey, sélectionnez Fichier > Nouveau > Application mobile FireMonkey - Delphi > Application vide. 2. Déposez un composant TListBox sur la fiche. 3. Dans l'inspecteur d'objets, définissez les propriétés suivantes du ListBox : o Définissez la propriété Align sur alClient afin que le composant ListBox utilise la fiche entière. o Définissez la propriété DefaultItemStyles.ItemStyle sur listboxitembottomdetail. 4. Cliquez avec le bouton droit sur le composant TListBox dans le concepteur ou l'éditeur, sélectionnez Ajouter un élément, puis ajoutez les composants suivants : o Composant TListBoxHeader. o Composant TSearchBox. Embarcadero Technologies 113 5. Fermez le Concepteur d'éléments. 6. Ajoutez un composant TLabel au TListBoxHeader, et définissez les propriétés suivantes dans l'inspecteur d'objets : o Définissez la propriété Align du composant TLabel sur alClient. o Définissez la propriété StyleLookup sur toollabel. o Définissez la propriété TextAlign sur taCenter. o Définissez la propriété Text sur DB DEMO. CONNEXION AUX DONNEES Voici les étapes fondamentales permettant de se connecter aux données d'une base de données au moyen de dbExpress : 1. Sur la Palette d'outils, double-cliquez sur le composant TSQLConnection. Embarcadero Technologies 114 2. Dans l'inspecteur d'objets, définissez les propriétés suivantes pour TSQLConnection : 1. Cette application utilise InterBase ToGo. Définissez donc la propriété Driver sur IBLite/ToGo. 2. Définissez la propriété LoginPrompt sur False afin que l'utilisateur ne reçoive pas une invite de connexion. 3. Cliquez sur les points de suspension [...] relatifs à la propriété Params, et définissez la valeur Database sur C:\Utilisateurs\Public\Documents publics\RAD Studio\11.0\Samples\Data\dbdemos.gdb (emplacement de la base de données) ; puis fermez la boîte de dialogue : 4. Définissez la propriété Connected sur True. Embarcadero Technologies 115 Remarque : Si vous obtenez une erreur ("base de données indisponible") sur l'environnement de développement, cela signifie que vous ne disposez pas d'une licence en cours pour InterBase. Une licence InterBase Developer Edition est incluse en tant que partie du produit pour certaines éditions du produit. Pour plus d'informations, voir Dépannage. 3. Ajoutez un composant TSQLDataSet à la fiche, et définissez les propriétés suivantes : 1. Définissez la propriété SQLConnection sur SQLConnection1 (celle ajoutée dans une étape précédente). 2. Définissez la propriété CommandText sur select COMMON_NAME, SPECIES_NAME from BIOLIFE order by COMMON_NAME. 3. Définissez la propriété Active sur True. 4. Ouvrez le Concepteur LiveBindings et connectez les données et l'interface utilisateur comme suit : 1. Cliquez sur COMMON_NAME dans BindSourceDB1 et déplacez le curseur de la souris sur Item.Text dans ListBox1. 2. Cliquez sur SPECIES_NAME dans BindSourceDB1 et déplacez le curseur de la souris sur Item.Detail dans ListBox1. Embarcadero Technologies 116 DEPLOIEMENT DE VOTRE APPLICATION SUR IOS Jusqu'ici, vous avez utilisé InterBase sur votre bureau. Cela signifie que la base de données réelle est située sur votre disque dur local (par exemple, C:\Utilisateurs\Public\Documents publics\RAD Studio\11.0\Samples\Data\dbdemos.gdb). Sur le périphérique iOS, l'application réside dans le Sandbox, et vous pouvez typiquement lire et écrire seulement les données qui sont situées dans le dossier Documents sous votre dossier d'application. Pour se connecter à une base de données locale sur iOS, vous devez effectuer les actions suivantes : Déployer la base de données sur le périphérique iOS. Changer la configuration (pour se connecter au fichier de base de données) en un fichier local sous le dossier Documents. DEPLOYER INTERBASE TOGO, DBEXPRESS DRIVER ET LE FICHIER DE BASE DE DONNEES SUR IOS Pour exécuter votre application sur iOS, vous devez déployer les fichiers suivants : Interbase ToGo dbExpress Driver to InterBase Le fichier de base de données (dbdemos.gdb) 1. Ouvrez le Gestionnaire de déploiement en sélectionnant Projet > Déploiement. Embarcadero Technologies 117 2. Sélectionnez Toutes les configurations - Plate-forme Simulateur iOS dans la liste déroulante des plates-formes cibles en haut du Gestionnaire de déploiement. 3. Sélectionnez Ajouter des fichiers spécifiques ( ) : 4. Sélectionnez les modules de base de données suivants, puis cliquez sur OK pour fermer la boîte de dialogue Fichiers spécifiques : o InterBase ToGo. Vous devez sélectionner la licence à utiliser lors du déploiement de l'application sur le périphérique. Les fichiers de licence disponibles sont listés dans la boîte de dialogue Fichiers spécifiques, sous le nom de modèle suivant : reg_*.slip. Comme vous pouvez le voir dans l'image ci-dessous, pour ce tutoriel, les fichiers de licence IBToGo et IBLite sont tout deux sélectionnés. o DBExpress InterBase Driver 5. Sélectionnez Ajouter des fichiers et sélectionnez le fichier de base de données (par exemple, C:\Utilisateurs\Public\Documents publics\RAD Studio\11.0\Samples\Data\dbdemos.gdb). Embarcadero Technologies 118 6. Sélectionnez dbdemos.gdb et définissez son chemin distant sur StartUp\Documents\. 7. Sélectionnez la colonne Plates-formes (double-cliquez sur les points de suspension [...] dans la ligne relative à dbdemos.gdb) : 1. Assurez-vous que Simulateur iOS et Périphérique iOS sont présents pour dbdemos.gdb. 2. Retirez Win32 de la liste s'il est présent (vous n'avez pas à copier les fichiers de base de données sur la plate-forme Win32). Sélectionnez la plate-forme Toutes les configurations - Périphérique iOS et assurez-vous que dbdemos.gdb est défini pour être déployé sur StartUp\Documents\. Le fichier de base de données (dbdemos.gdb) vient d'être configuré pour être déployé dans le dossier Documents de la zone sandbox de votre application iOS. MODIFIER VOTRE CODE POUR SE CONNECTER A UN FICHIER DE BASE DE DONNEES LOCAL SUR IOS Comme décrit dans l'étape précédente, le composant TSQLConnection est connecté à une base de données sur votre système de fichiers local avec un chemin absolu. Vous devez donc remplacer l'emplacement du fichier avant d'établir la connexion à la base de données, comme suit : 1. Dans le Concepteur de fiches, sélectionnez le composant SQLConnection1. 2. Dans l'inspecteur d'objets, double-cliquez sur le champ Valeur de l'événement BeforeConnect. 3. Ajoutez le code suivant à ce gestionnaire d'événements : procedure TForm1.SQLConnection1BeforeConnect(Sender: TObject); begin {$IFDEF IOS} SQLConnection1.Params.Values['Database'] := GetHomePath + PathDelim + 'Documents' + PathDelim + 'dbdemos.gdb'; {$ENDIF} end; Embarcadero Technologies 119 La fonction GetHomePath vous donne l'emplacement d'origine réel d'une application iOS. L'utilisation de la constante PathDelim est recommandée, du fait que PathDelim utilise spécifiquement le délimiteur de chemin de la plateforme cible (au lieu des délimiteurs codés en dur, tels que \ ou /). EXECUTER VOTRE APPLICATION SUR LE SIMULATEUR IOS OU SUR UN PERIPHERIQUE IOS Votre application est maintenant prête pour l'exécution. Vous devriez être en mesure de parcourir les données de la même façon que dans l'EDI. Vous pouvez également rétrécir la liste en utilisant la zone de recherche, comme illustré dans la deuxième image : Embarcadero Technologies 120 DEPANNAGE PROBLEMES DE LICENCES INTERBASE Si vous obtenez une erreur ("base de données indisponible") lors de la connexion à la base de données dans l'environnement de développement, cela signifie que vous ne disposez pas d'une licence en cours pour InterBase. Une licence InterBase Developer Edition est incluse en tant que partie du produit pour certaines éditions du produit. Pour activer la licence InterBase Developer Edition pour une installation de RAD Studio enregistrée, accédez au Gestionnaire des licences des produits Embarcadero (cliquez sur Démarrer | Tous les programmes | Embarcadero InterBase XE3). PROBLEMES DE GESTION DES EXCEPTIONS Si votre application déclenche une exception sans disposer d'un code de gestion d'exception adéquat, votre application iOS se plante simplement (disparaît) à l'exécution. En présence d'un plantage, vous pouvez vous connecter manuellement à la base de données pendant la résolution du problème par le biais des étapes suivantes : 1. Sélectionnez le composant SQLConnection1 et définissez la propriété Connected sur False. 2. Déposez un bouton sur la fiche et créez le gestionnaire d'événements suivant pour établir une connexion manuelle à la base de données : procedure TForm1.Button1Click(Sender: TObject); begin try SQLConnection1.Connected := True; SQLDataSet1.Active := True; except on e: Exception do begin ShowMessage(e.Message); end; end; end; Embarcadero Technologies 121 ERREURS TYPIQUES ET RESOLUTIONS Voici des erreurs typiques que vous pouvez rencontrer lors de la connexion à la base de données, et les suggestions pour la résolution des problèmes : Erreur sur iOS Suggestion Vérifiez que le fichier de base de données (dbdemos.gdb) est livré dans 'StartUp\Documents\'. Vérifiez que le fichier de licence est livré pour InterBase ToGo. Vérifiez que vous pointez sur le fichier local (ajoutez un gestionnaire d'événements pour l'événement OnBeforeConnect du composant SQLConnection1). VOIR AUSSI InterBase ToGo avec dbExpress http://www.embarcadero.com/products/interbase/product-editions Tutoriel iOS : Utilisation de SQLite dans une application iOS Tutoriel iOS : Connexion à une base de données d'entreprise depuis une application client iOS Embarcadero Technologies 122 TUTORIEL IOS : UTILISATION DE SQLITE DANS UNE APPLICATION IOS Avant de commencer ce tutoriel, il est recommandé de lire et suivre le tutoriel suivant : Tutoriel iOS : Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS Ce tutoriel décrit les étapes fondamentales permettant d'utiliser SQLite en tant que stockage de données local sur votre périphérique iOS à travers le framework dbExpress. Embarcadero Technologies 123 UTILISATION DE DBEXPRESS POUR SE CONNECTER A LA BASE DE DONNEES dbExpress est un framework d'accès à la base de données très rapide, écrit en Delphi. RAD Studio fournit des pilotes pour la plupart des bases de données majeures, telles que InterBase, Oracle, DB2, SQL Server, MySQL, Firebird, SQLite et ODBC. Vous pouvez accéder à ces diverses bases de données en utilisant des procédures similaires à la procédure décrite ici. Pour la plate-forme iOS, dbExpress supporte InterBase ToGo ainsi que SQLite. Ces produits de base de données peuvent s'exécuter sur les périphériques iOS. Pour les autres bases de données, telles que Oracle, vous devez disposer d'au moins une bibliothèque client. Sur les plates-formes Windows, la bibliothèque client est fournie en tant que DLL sur laquelle se connecter. Par conséquent, vous devez développer les applications en utilisant des technologies de niveau intermédiaire telles que DataSnap pour la connexion à ces produits de base de données à partir de périphériques iOS. Un autre tutoriel décrit comment se connecter à la base de données d'entreprise sans utiliser une bibliothèque client sur le périphérique iOS ; voir Tutoriel iOS : Connexion à une base de données d'entreprise depuis une application client iOS. CREATION DE LA BASE DE DONNEES DANS L'ENVIRONNEMENT WINDOWS A DES FINS DE DEVELOPPEMENT Vous devez d'abord créer un fichier de base de données SQLite sur votre plateforme de développement Windows. Utilisez les étapes suivantes afin que vous puissiez utiliser le Concepteur de fiches mobiles pour concevoir l'interface utilisateur de votre application iOS. CREER LA BASE DE DONNEES DANS L'EXPLORATEUR DE DONNEES 1. Accédez à l'explorateur de données, cliquez avec le bouton droit sur le noeud SQLite et sélectionnez Ajouter une nouvelle connexion : Embarcadero Technologies 124 2. Définissez le nom de la connexion, tel que ShoppingList. 3. Spécifiez l'emplacement du fichier de base de données. 4. Cliquez sur le bouton Avancées et ouvrez le dialogue Propriétés avancées. 5. Définissez la propriété FailIfMissing sur False, puis fermez le dialogue : Remarque : La définition de FailIfMissing sur False indique à l'explorateur de données de créer un nouveau fichier de base de données si le fichier n'est pas disponible. 6. Cliquez sur le bouton Tester la connexion. Avec cette opération, le nouveau fichier de base de données est créé si aucun fichier n'existait : Embarcadero Technologies 125 CREER UNE TABLE SUR L'EXPLORATEUR DE DONNEES 1. Sur l'explorateur de données, sélectionnez le noeud ShoppingList sous la section SQLite, puis sélectionnez Nouvelle table dans le menu contextuel. 2. Spécifiez une colonne intitulée ShopItem avec comme valeur du type de données TEXT. 3. Cliquez sur le bouton Enregistrer et spécifiez un nom de table (par exemple, Item). Embarcadero Technologies 126 CONCEPTION ET CONFIGURATION DE L'INTERFACE UTILISATEUR Les composants d'interface utilisateur visibles sont chargés sur le concepteur Ce tutoriel utilise un composant TListBox en tant qu'élément de l'interface utilisateur. Pour configurer un composant ListBox et d'autres éléments de l'interface utilisateur, suivez les étapes ci-après : 1. Créez une application mobile FireMonkey en utilisant Fichier > Nouveau > Application mobile FireMonkey - Delphi. 2. Déposez un TToolBar sur la fiche. 3. Déposez un TButton sur le composant ToolBar. 4. Définissez les propriétés suivantes dans l'inspecteur d'objets : o Définissez la propriété Name sur ButtonAdd. o Définissez la propriété StyleLookup sur addtoolbuttonbordered. 5. Déposez un TButton sur le composant ToolBar. 6. Définissez les propriétés suivantes dans l'inspecteur d'objets : o Définissez la propriété Name sur ButtonDelete. o Définissez la propriété StyleLookup sur deletetoolbutton. o Définissez la propriété Text sur Delete. o Définissez la propriété Visible sur False. 7. Déposez un lib_fr:FMX.StdCtrls.TLabel sur le composant ToolBar. Embarcadero Technologies 127 8. Définissez les propriétés suivantes dans l'inspecteur d'objets : o Définissez la propriété Align sur alClient. o Définissez la propriété StyleLookup sur toollabel. o Définissez la propriété Text sur Shopping List. o Définissez la propriété TextAlign sur taCenter. 9. Déposez un composant TListBox sur la fiche. 10. Définissez les propriétés suivantes dans l'inspecteur d'objets : o Définissez la propriété Align sur alClient afin que le composant ListBox utilise la fiche entière. CONNEXION AUX DONNEES Voici les étapes fondamentales permettant de se connecter aux données d'une base de données qui est déjà définie dans l'explorateur de données : 1. Sélectionnez la table Item sur l'explorateur de données et faites-la glisser dans le Concepteur de fiches. Remarque : Cela crée deux composants (ShoppingList: TSQLConnection et Item: TSQLDataSet) sur la fiche. 2. Sélectionnez le composant ShoppingList sur la fiche, puis définissez la propriété Connected sur True. 3. Sélectionnez le composant Item sur la fiche, puis définissez la propriété Active sur True. 4. Sélectionnez Voir > Concepteur LiveBindings et le Concepteur LiveBindings s'ouvre. Embarcadero Technologies 128 5. Sélectionnez ShopItem dans le composant Item et faites-glisser ShopItem sur ListBox1. Le suivi de ces étapes connecte l'interface utilisateur de l'application aux données sur une base de données SQLite. Si vous avez utilisé une table avec des données existantes pour ce tutoriel, vous devriez maintenant voir les données réelles dans le Concepteur de fiches. CREATION DU GESTIONNAIRE D'EVENEMENTS AFIN DE RENDRE VISIBLE LE BOUTON DELETE QUAND L'UTILISATEUR SELECTIONNE UN ELEMENT DANS LA LISTE La propriété Visible du bouton Delete est définie sur False. Par conséquent, par défaut, l'utilisateur final ne voit pas ce bouton. Vous pouvez le rendre visible quand l'utilisateur sélectionne un élément dans la liste, comme suit : Sélectionnez ListBox1 et définissez le gestionnaire d'événements suivant pour l'événement OnItemClick. procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox; const Item: TListBoxItem); begin ButtonDelete.Visible := ListBox1.Selected <> nil; end; Embarcadero Technologies 129 CREATION DU GESTIONNAIRE D'EVENEMENTS POUR LE BOUTON ADD AFIN D'AJOUTER UNE ENTREE DANS LA LISTE Les connexions à la base de données sont également configurées L'étape suivante consiste à ajouter une fonctionnalité à cette application pour l'ajout d'un élément à la liste shopping. 1. Déposez un composant TSQLQuery sur la fiche. 2. Définissez les propriétés suivantes dans l'inspecteur d'objets : o Définissez la propriété Name sur SQLQueryInsert. o Définissez la propriété SQLConnection sur ShoppingList. o Définissez la propriété SQL comme suit : INSERT INTO ITEM (ShopItem) VALUES (:ShopItem) o o Sélectionnez le bouton Expand (...) sur la propriété Params. Sélectionnez le paramètre ShopItem et définissez la propriété DataType sur ftString : Embarcadero Technologies 130 3. Dans le Concepteur de fiches, double-cliquez sur le composant AddButton. Ajoutez le code suivant à ce gestionnaire d'événements : procedure TForm1.ButtonAddClick(Sender: TObject); var TaskName: String; begin try if InputQuery('Enter New Item', 'Name', TaskName) and (TaskName.Trim <> '') then begin SQLQueryInsert.ParamByName('ShopItem').AsString := TaskName; SQLQueryInsert.ExecSQL(); Item.Refresh; ButtonDelete.Visible := ListBox1.Selected <> nil; end; except on e: Exception do begin ShowMessage(e.Message); end; end; end; La fonction InputQuery présente une boîte de dialogue demandant à l'utilisateur final d'entrer du texte. Cette fonction renvoie True quand l'utilisateur sélectionne OK. Vous pouvez ainsi ajouter des données à la base de données seulement quand l'utilisateur sélectionne OK, et le texte contient des données. Embarcadero Technologies 131 CREATION DU GESTIONNAIRE D'EVENEMENTS POUR LE BOUTON DELETE AFIN DE RETIRER UNE ENTREE DE LA LISTE L'étape suivante consiste à ajouter une fonctionnalité à cette application pour retirer un élément de la liste shopping : 1. Déposez un composant TSQLQuery sur la fiche. 2. Définissez les propriétés suivantes dans l'inspecteur d'objets : o Définissez la propriété Name sur SQLQueryDelete. o Définissez la propriété SQLConnection sur ShoppingList. o Définissez la propriété SQL comme suit : delete from Item where ShopItem = :ShopItem Sélectionnez le bouton Expand (...) sur la propriété Params. Sélectionnez le paramètre ShopItem et définissez la propriété DataType sur ftString. 3. Dans le Concepteur de fiches, double-cliquez sur le composant DeleteButton. Ajoutez le code suivant à ce gestionnaire d'événements. o o Embarcadero Technologies 132 procedure TForm1.ButtonDeleteClick(Sender: TObject); var TaskName: String; begin TaskName := ListBox1.Selected.Text; try SQLQueryDelete.ParamByName('ShopItem').AsString := TaskName; SQLQueryDelete.ExecSQL(); Item.Refresh; ButtonDelete.Visible := ListBox1.Selected <> nil; except on e: Exception do begin SHowMessage(e.Message); end; end; end; MODIFICATION DE VOTRE CODE POUR SE CONNECTER A UN FICHIER DE BASE DE DONNEES LOCAL SUR IOS Les fonctionnalités de base de cette application sont maintenant implémentées. Dans l'explorateur de données, vous avez créé un fichier de base de données sur Windows. Le fichier de base de données n'est pas disponible sur votre périphérique iOS, sauf si vous l'avez copié sur le périphérique iOS ou créé à la volée. Vous pouvez créer une base de données SQLite et une table avec les étapes suivantes : SPECIFICATION DE L'EMPLACEMENT DE LA BASE DE DONNEES SQLITE SUR LE PERIPHERIQUE IOS 1. Dans le Concepteur de fiches, sélectionnez le composant ShoppingList. 2. Dans l'inspecteur d'objets, double-cliquez sur l'événement BeforeConnect. 3. Ajoutez le code suivant à ce gestionnaire d'événements : procedure TForm1.SQLConnectionSQLiteBeforeConnect(Sender: TObject); begin {$IFDEF IOS} ShoppingList.Params.Values['Database'] := GetHomePath + PathDelim + 'Documents' + PathDelim + 'shoplist.s3db'; {$ENDIF} end; Embarcadero Technologies 133 La fonction GetHomePath vous donne l'emplacement d'origine réel d'une application iOS. L'utilisation de la constante System.SysUtils.PathDelim est recommandée, du fait que PathDelim utilise spécifiquement le délimiteur de chemin de la plate-forme cible (au lieu des délimiteurs codés en dur, tels que \ ou /). CREATION D'UNE TABLE SI AUCUNE N'EXISTE Avec SQLite, vous pouvez créer une table quand aucune table n'existe, en utilisant l'instruction CREATE TABLE IF NOT EXISTS. Vous pouvez créer une table après la connexion du composant TSQLCOnnection à la base de données et avant la connexion du composant TSQLDataSet à la table. Utilisez les étapes suivantes : 1. Dans le Concepteur de fiches, sélectionnez le composant ShoppingList. 2. Dans l'inspecteur d'objets, double-cliquez sur l'événement AfterConnect. 3. Ajoutez le code suivant à ce gestionnaire d'événements : procedure TForm1.ShoppingListAfterConnect(Sender: TObject); begin ShoppingList.ExecuteDirect('CREATE TABLE IF NOT EXISTS Item (ShopItem TEXT NOT NULL)'); end; Embarcadero Technologies 134 EXECUTION DE VOTRE APPLICATION SUR LE SIMULATEUR IOS OU SUR UN PERIPHERIQUE IOS Votre application est maintenant prête pour l'exécution (sélectionnez Exécuter > Exécuter). Si vous rencontrez un problème lors de l'exécution de l'application, suivez les étapes données dans Dépannage. VOIR AUSSI Tutoriel iOS : Utilisation de InterBase ToGo dans une application iOS Tutoriel iOS : Connexion à une base de données d'entreprise depuis une application client iOS Support SQLite dans XE3 Embarcadero Technologies 135 TUTORIEL IOS : CONNEXION A UNE BASE DE DONNEES D'ENTREPRISE DEPUIS UNE APPLICATION CLIENT IOS Avant de commencer ce tutoriel, il est recommandé de lire et suivre le tutoriel suivant : Tutoriel iOS : Utilisation des composants Zone de liste pour afficher une vue table dans une application iOS Tutoriel iOS : Utilisation de InterBase ToGo dans une application iOS Ce tutoriel décrit comment se connecter à une base de données d'entreprise depuis une application client iOS. Pour établir la connexion à une base de données d'entreprise, vous devez disposer d'une bibliothèque client. Dans la plupart des cas, la bibliothèque client est fournie par l'éditeur de la base de données au format DLL. Cette stratégie ne fonctionne pas correctement pour les périphériques iOS car aucune bibliothèque client n'est disponible. Pour résoudre ce problème, vous pouvez développer un niveau intermédiaire pour établir la connexion à une base de données d'entreprise, et votre application iOS peut communiquer avec le niveau intermédiaire. RAD Studio fournit le framework DataSnap avec lequel vous pouvez développer le niveau intermédiaire (et y accéder) avec un minimum de codage. Ce tutoriel décrit les étapes de développement du niveau intermédiaire et du client iOS. Embarcadero Technologies 136 CREATION DU NIVEAU INTERMEDIAIRE, UN SERVEUR DATASNAP Créez d'abord un serveur DataSnap qui expose une table d'un serveur de base de données. Ce tutoriel utilise une application Fiches VCL Serveur DataSnap en tant que serveur DataSnap. Remarque : Dans ce tutoriel, le serveur DataSnap (application VCL) fonctionne comme le niveau intermédiaire dans une application de base de données multiniveau. Vous pouvez facilement créer puis supprimer par la suite une instance d'un serveur DataSnap. Dès que vous avez assimilé les étapes élémentaires, vous pouvez convertir le niveau intermédiaire en application de service Windows. CREER UNE APPLICATION VCL SERVEUR DATASNAP 1. Créez un nouveau projet. Choisissez Fichier > Nouveau > Autre et sélectionnez dans le dialogue Nouveaux éléments Projets Delphi > Serveur DataSnap > Serveur DataSnap afin de créer un nouveau projet Delphi. 2. L'expert Nouveau serveur DataSnap apparaît et vous devez suivre ses étapes sans modifier trop de paramètres. Embarcadero Technologies 137 3. Dans l'expert Nouveau serveur DataSnap : 1. A la première étape, choisissez Application Fiches VCL comme type d'application. 2. A la deuxième étape, choisissez le protocole TCP/IP, Classe de méthodes serveur et Méthodes exemple dans la liste Fonctionnalités serveur. 3. A la troisième étape, laissez le port des communications TCP/IP par défaut sur 211. Cela garantira que la communication entre le client et le serveur passera par le port DataSnap par défaut. 4. A la quatrième étape (la dernière), sélectionnez TDSServerModule en tant qu'ancêtre des méthodes serveur. 4. Enregistrez l'unité de fiche sous DataSnapServerUnit.pas. 5. Basculez sur DataSnapServerUnit et définissez la propriété Name de la fiche sur DSServerForm. 6. Enregistrez l'unité des méthodes serveur (par défaut comme créé par l'expert : ServerMethodsUnit1) sous ServerModuleUnit.pas. 7. Enregistrez l'unité du conteneur serveur (par défaut comme créé par l'expert : ServerContainerUnit1) sous ServerContainerUnit.pas. 8. Enregistrez le nouveau projet sous DataSnapServerProject.droj. Embarcadero Technologies 138 9. Sélectionnez ProjectGroup1 dans le Gestionnaire de projets et enregistrez le projet sous DataSnapTutorialProjectGroup.groupproj. DEFINIR UN ENSEMBLE DE DONNEES SUR LE SERVEUR DATASNAP 1. Basculez sur le fichier ServerContainerUnit.pas et remplacez la clause uses dans l'implémentation par : uses Winapi.Windows, ServerModuleUnit; 2. Basculez sur le fichier ServerModuleUnit.pas. 3. Dans le Concepteur de fiches, définissez la propriété Name du module serveur sur DSServerModule_EMPLOYEE. 4. Configurez les composants suivants sur le module serveur : o Déposez un composant TSQLConnection sur le module serveur et définissez les propriétés suivantes : TSQLConnection encapsule une connexion dbExpress à un serveur de base de données. Définissez la propriété Name sur SQLConnection_EMPLOYEE. Définissez la propriété LoginPrompt sur False. Définissez Driver sur InterBase. Développez le noeud Driver et définissez la propriété DataBase sur C:\Utilisateurs\Public\Documents publics\RAD Studio\11.0\Samples\Data\EMPLOYEE.GDB. Définissez la propriété Connected sur True. Si vous obtenez une erreur, vérifiez les propriétés sous Driver : Embarcadero Technologies 139 o Déposez un composant TSQLDataSet sur le module serveur et définissez les propriétés suivantes : TSQLDataSet représente les données récupérées à l'aide de dbExpress. Définissez la propriété Name sur SQLDataSet_EMPLOYEE. Définissez la propriété SQLConnection sur SQLConnection_EMPLOYEE. Définissez la propriété CommandType sur ctTable. Définissez la propriété CommandText sur EMPLOYEE. Définissez la propriété Active sur True. Si vous obtenez une erreur, vérifiez les propriétés que vous venez de configurer. Déposez un composant TDataSetProvider sur le module serveur et définissez les propriétés suivantes : o TDataSetProvider conditionne les données d'un ensemble de données et transmet un ou plusieurs paquets de données transportables au client DataSnap. Définissez la propriété Name sur DataSetProvider_EMPLOYEE. Définissez la propriété DataSet sur SQLDataSet_EMPLOYEE: Remarque : Ce tutoriel utilise InterBase en tant qu'exemple. Vous pouvez toutefois vous connecter à n'importe quel serveur de base de données en Embarcadero Technologies 140 utilisant les mêmes étapes. Sélectionnez le pilote adéquat, ainsi que d'autres propriétés pour pointer sur votre base de données. EXPOSER L'ENSEMBLE DE DONNEES A PARTIR DU SERVEUR DATASNAP Vous venez juste de créer un nouveau module serveur contenant un DataSet et un DataSetProvider qui conditionne les données dans la couche suivante. L'étape suivante expose le module serveur au client DataSnap. 1. Dans le Concepteur de fiches, ouvrez ServerContainerUnit. 2. Sélectionnez DSServerClass1 et mettez à jour le gestionnaire d'événements existant pour l'événement OnGetClass. Ajoutez le code suivant au gestionnaire d'événements DSServerClass1 : procedure TServerContainer1.DSServerClass1GetClass(DSServerClass: TDSServerClass; var PersistentClass: TPersistentClass); begin PersistentClass := TDSServerModule_EMPLOYEE; end; Avec ce gestionnaire d'événements, le serveur DataSnap expose les fournisseurs ainsi que les méthodes publiques de cette classe au client DataSnap. Compte tenu des étapes de la section précédente, vous allez maintenant exposer le composant DataSetProvider_EMPLOYEE DataSetProvider à votre client DataSnap. EXECUTER LE SERVEUR DATASNAP L'implémentation du serveur DataSnap est terminée. Cliquez avec le bouton droit sur DataSnapServerProject.exe et sélectionnez Exécuter sans débogage. . Embarcadero Technologies 141 Vous pouvez maintenant voir le serveur DataSnap s'exécuter sur votre machine Windows. Puisque ce serveur DataSnap n'a pas d'élément d'interface utilisateur, il ressemble à une fiche vide et c'est ce qui est prévu à ce stade. CREATION D'UNE APPLICATION IOS QUI SE CONNECTE AU SERVEUR DATASNAP L'étape suivante consiste à créer l'application client iOS. 1. Dans le Gestionnaire de projets, cliquez avec le bouton droit sur DataSnapTutorialProjectGroup et sélectionnez Ajouter un nouveau projet... 2. Sélectionnez Application mobile FireMonkey sur la page Projets Delphi : Embarcadero Technologies 142 3. Enregistrez la nouvelle unité sous DataSnapClientUnit.pas. 4. Enregistrez le nouveau projet sous DataSnapClientProject.droj. 5. Ouvrez DataSnapClientUnit et définissez la propriété Name de la fiche sur DSClientForm. 6. Déposez les composants suivants sur le Concepteur de fiches mobiles FireMonkey : o Composant TSQLConnection (SQLConnection1) TSQLConnection encapsule une connexion dbExpress à un serveur de base de données. Il supporte aussi le serveur DataSnap. Définissez la propriété Driver sur DataSnap. Développez la propriété Driver et définissez la propriété HostName sur le nom d'hôte du serveur DataSnap. Définissez la propriété LoginPrompt sur False. Définissez la propriété Connected sur True. Si vous obtenez une erreur, vérifiez les propriétés que vous venez de définir. o Composant TDSProviderConnection (DSProviderConnection1) Le composant TDSProviderConnection fournit la connectivité au serveur DataSnap en utilisant dbExpress. Définissez la propriété SQLConnection sur SQLConnection1. Définissez ServerClassName sur TDSServerModule_EMPLOYEE. Ce nom doit correspondre au nom de la classe du module serveur du serveur DataSnap. Définissez la propriété Connected sur True. Composant TClientDataSet (ClientDataSet1) o Embarcadero Technologies 143 TClientDataSet implémente un ensemble de données indépendant de la base de données, utilisable en tant que tampon mémoire local des enregistrements d'un autre ensemble de données. Définissez la propriété RemoteServer sur DSProviderConnection1. Définissez la propriété ProviderName sur DataSetProvider_EMPLOYEE. Ce nom doit correspondre au nom du fournisseur du serveur DataSnap. Définissez la propriété Active sur True. Composant TListBox Définissez la propriété Align sur alClient : o 7. Ouvrez le Concepteur LiveBindings et connectez les données et l'interface utilisateur comme suit : 1. Cliquez sur FULL_NAME dans BindSourceDB1 et déplacez le curseur de la souris sur Item.Text dans ListBox1 : 2. Vous avez à présent créé et configuré le client DataSnap sur iOS. Vous devriez voir les données provenant du serveur DataSnap dans l'EDI : Embarcadero Technologies 144 DEPLOYER LA BIBLIOTHEQUE MIDAS SUR LE SIMULATEUR IOS Pour exécuter votre application sur le simulateur iOS, vous devez déployer les fichiers suivants : Bibliothèque MIDAS 1. Ouvrez le Gestionnaire de déploiement en sélectionnant Projet > Déploiement. 2. Sélectionnez Ajouter des fichiers spécifiques ( ) : 3. Sélectionnez le module suivant, puis cliquez sur OK pour fermer le Gestionnaire de déploiement : o Bibliothèque MIDAS Embarcadero Technologies 145 EXECUTER VOTRE APPLICATION SUR LE SIMULATEUR IOS OU SUR UN PERIPHERIQUE IOS Votre application est maintenant prête pour l'exécution. Dans le Gestionnaire de projets, sélectionnez le simulateur iOS ou la plate-forme cible Périphérique iOS et exécutez votre application. Vous devriez être en mesure de parcourir les données de la même façon que dans l'EDI. VOIR AUSSI Tutoriel iOS : Utilisation de InterBase ToGo dans une application iOS Tutoriel iOS : Utilisation de SQLite dans une application iOS Développement d'applications DataSnap Présentation des applications de bases de données multiniveaux Datasnap.DSServer.TDSServer Embarcadero Technologies 146