Même si cela fait déjà plusieurs mois que nous avons lancé RAD Studio 13, C++Builder 13 et Delphi 13, chez Embarcadero, nous n'avons pas vraiment parlé des nouvelles fonctionnalités des bibliothèques d'exécution dans notre blog. C'est pourquoi je rédige actuellement plusieurs articles consacrés à différents domaines, en commençant par la bibliothèque FireMonkey.
Il existe désormais de nombreuses nouvelles fonctionnalités, certaines très complexes (dont certaines ont été abordées plus en détail) et d'autres plus modestes. Ma liste des “ 13 principales fonctionnalités ” est une sélection personnelle des changements qui me semblent les plus importants. Comme son titre l'indique, il s'agit d'une liste personnelle, car il existe d'autres nouvelles fonctionnalités qui pourraient vous intéresser davantage que celles que j'ai sélectionnées. Notez également que cette liste se concentre sur les nouvelles fonctionnalités, mais l'équipe de R&D a également résolu un grand nombre de problèmes et d'incohérences, et a travaillé sur les API et l'intégration de la plateforme.
Table des matières
FMX 1 : Nouveau composant ApplicationEvents
RAD Studio 13 a introduit un nouveau composant TApplicationEvents, qui facilite considérablement la gestion des événements à l'échelle de l'application, sans avoir à créer manuellement un gestionnaire d'événements et à le connecter. Il suffit de déposer le composant sur une surface de conception (même un concepteur non visuel) et d'ajouter des gestionnaires d'événements :

Notez que, bien que le concept soit similaire à celui de son équivalent VCL, les événements réels sont différents et dépendent du cycle de vie des applications FMX. Dans l'exemple illustré dans l'image ci-dessus, je gère le OnOrientationChanged événement, généralement utilisé sur mobile.
FMX 2 : OnCheckedChange pour les éléments de la liste déroulante
Il existe un nouvel événement OnChangeCheck pour un élément ListBoxItem dans un contrôle ListBox, comme illustré ci-dessous :

FMX 3 : TComboEdit AutoComplete
Le composant TComboEdit prend désormais en charge la saisie semi-automatique, à l'instar de VCL TComboBox. Au fur et à mesure que vous tapez, le contrôle suggère les premiers éléments de la liste correspondant à la saisie en cours. Dans ce cas, la liste déroulante contient une liste de chiffres, et la saisie de “ t ” suggère “ deux ” :

FMX 4 : Barre de suivi inversée
Le contrôle TTrackBar dispose d'une propriété Reverse qui permet d'inverser le sens de la barre de défilement.

FMX 5 : molette de souris pour barre de défilement
Le même contrôle TTrackBar prend désormais en charge le défilement à l'aide de la molette de la souris, au lieu du défilement à l'aide du clavier. Notez qu'une barre de défilement inversée continue de défiler dans la direction attendue.
FMX 6 : Nouveaux alignements
L'énumération TAlignLayout comprend de nouvelles options d'alignement pour centrer les contrôles, en plus d'une très longue liste d'options d'alignement existantes. Les nouveaux modes d'alignement comprennent :
- TopCenter, comme TAlignLayout.Top, centre le contrôle horizontalement.
- TopLeft, comme TAlignLayout.Top, aligne le contrôle à gauche.
- TopRight, comme TAlignLayout.Top, aligne le contrôle à droite.
- LeftCenter, comme TAlignLayout.Left, centre le contrôle verticalement.
- LeftTop, comme TAlignLayout.Left, aligne le contrôle en haut.
- LeftBottom, comme TAlignLayout.Left, aligne le contrôle vers le bas.
- RightCenter, comme TAlignLayout.Right, centre le contrôle verticalement.
- RightTop, comme TAlignLayout.Right, aligne le contrôle en haut.
- RightBottom, comme TAlignLayout.Right, aligne le contrôle vers le bas.
- BottomCenter, comme TAlignLayout.Bottom, centre le contrôle horizontalement.
- BottomLeft, comme TAlignLayout.Bottom, aligne le contrôle à gauche.
- BottomRight, comme TAlignLayout.Bottom, aligne le contrôle à droite.
FMX 7 : Astuces et styles pour Bind Navigator
Le contrôle de navigation utilisé dans Live Bindings, TBindNavigator, offre la possibilité de configurer un indice et un style spécifiques pour chacun des boutons du navigateur, à l'aide des sous-propriétés de la propriété ButtonsOptions.

FMX 8 : Améliorations apportées à la boîte de défilement présentée
Le contrôle TPresentedScrollBox dispose d'un nouvel ensemble de propriétés permettant à l'utilisateur de contrôler l'animation de défilement, les rebonds et l'interaction tactile :
- La propriété AutoHide définit si les barres de défilement sont automatiquement masquées lorsque le défilement est terminé.
- La propriété Bounces indique s'il est possible de faire défiler le contenu au-delà des bordures.
- La propriété ScrollAnimation active ou désactive l'animation de défilement.
- La propriété ScrollDirections définit les directions de défilement disponibles.
- La propriété TouchTracking indique si le contrôle répond aux événements tactiles.
Il existe également une nouvelle méthode IsVisibleChild, que l'équipe a utilisée pour optimiser le rendu de TScrollBox et TPresentedScrollBox.
FMX 9 : Invite de texte de mémo
RAD Studio 13 ajoute une propriété TextPrompt au contrôle TMemo dans FireMonkey. Elle est utilisée pour le texte de remplacement lorsque le texte du contrôle est vide. Elle fonctionne comme son équivalent TEdit. Vous pouvez voir un exemple ci-dessous :

FMX 10 : le nouveau service Display Link
Il s'agit d'un changement fondamental apporté à FireMonkey, qui mériterait un article de blog détaillé à part entière.
Le nouveau service Display Link est désormais le moteur central de toutes les animations des applications, remplaçant entièrement l'ancien moteur basé sur une minuterie utilisé auparavant. Ce système précis à l'image près exploite la fréquence de rafraîchissement réelle de l'écran pour synchroniser et piloter toutes les mises à jour et animations de l'interface utilisateur. En utilisant des API natives de la plateforme telles que JChoreographer (Android) et DisplayLink (iOS), le service garantit que le traitement des animations est étroitement aligné avec les événements VSync, ce qui se traduit par des visuels plus fluides et plus cohérents sur toutes les plateformes, en particulier sur les appareils mobiles modernes à taux de rafraîchissement élevé.
Cette amélioration de la stabilité et de la fluidité des animations est visible : en renforçant la stabilité du moteur de rendu, les animations sont plus fluides. Il s'agit d'un changement et d'une amélioration significatifs, qui placent les animations FMX au même niveau, voire dans certains cas au-dessus, des autres solutions mobiles. Cette amélioration est visible sur toutes les plateformes cibles et tous les pilotes GPU que FireMonkey peut utiliser.
FMX 11 : Hauteur flexible des éléments de menu
La hauteur des éléments de menu (TMenuItem) était auparavant une valeur constante. À partir de RAD Studio 13, l'utilisateur peut ajouter un objet TStyleTag avec StyleName=“ height “ au style TMenuItem et spécifier la hauteur de l'élément de menu dans la propriété Value.
FMX 12 : Encore plus d'émojis
Nous avons ajouté la prise en charge de la version 16.0 des symboles Emoji.
FMX 13 : un nouveau contrôle MaskEdit
Il existe un tout nouveau contrôle MaskEdit pour FireMonkey, qui fonctionne de manière similaire à son équivalent VCL. Il comprend un concepteur spécifique pour les masques de saisie, afin de faciliter la définition des règles de saisie. Vous pouvez voir cet éditeur de propriétés au moment de la conception dans l'image ci-dessous :

Il n'y a qu'une seule différence significative, par rapport à la version VCL du contrôle, dans la manière dont les entrées incorrectes sont gérées par TMaskEdit dans FMX. Dans l'implémentation FireMonkey, plutôt que de lever une exception si la valeur actuelle dans MaskEdit n'est pas valide, le contrôle déclenche un événement OnValidateError. Il est recommandé de gérer cet événement afin de fournir à l'utilisateur un retour visuel sur la valeur non valide. Par exemple, vous pouvez mettre en surbrillance le champ avec un contour rouge, ajouter une étiquette accompagnant la valeur incorrecte, ou même lever une exception, comme dans le contrôle VCL. Si la valeur est toujours incorrecte après la réinitialisation du focus, le contrôle reste dans un état non valide et l'événement OnChange n'est pas déclenché tant que la valeur n'est pas valide.
FireMonkey continue de s'améliorer
Comme vous pouvez le voir dans cet article de blog, FireMonkey continue de s'améliorer en termes de fonctionnalités (et de qualité, ce que je n'ai pas souligné ici) et, bien que nous ajoutions des contrôles et des composants de type VCL, nous essayons de le faire de manière à offrir plus de flexibilité et à ce que cela fonctionne également sur les appareils mobiles. Certaines fonctionnalités, comme la prise en charge améliorée des animations, sont prioritaires pour les appareils mobiles. L'objectif reste d'offrir un framework multi-appareils et la possibilité d'avoir un code source unique pour les ordinateurs de bureau et les appareils mobiles, tout en offrant tout ce dont vous avez besoin pour créer des applications exclusivement mobiles ou exclusivement pour ordinateurs de bureau.
Restez à l'écoute pour d'autres articles de blog présentant les fonctionnalités des autres bibliothèques RAD Studio.
