Mouvements dans FireMonkey

De RAD Studio
Aller à : navigation, rechercher

Remonter à Guide des applications FireMonkey


Les mouvements dans les applications multi-périphériques sont très similaires aux mouvements dans la VCL. Un mouvement est considéré comme étant destiné au contrôle qui se trouve sous le doigt (pour Windows ou les systèmes mobiles) ou sous le curseur de la souris (pour Windows et macOS). Par ailleurs, le mouvement peut être géré par l'un des parents du contrôle (dans la hiérarchie, le premier qui gère le mouvement).

Il y a deux types de mouvements :

  • Mouvements standard :
    • Les mouvements standard (Haut, Bas, Triangle, etc.) sont équivalents aux mouvements d'application sur Windows et aux séquences multi-tactiles sur macOS et iOS. Les mouvements standard sont réalisés avec un doigt sur Windows, et avec deux doigts sur macOS.
    • Dès qu'un mouvement est terminé (c'est-à-dire lorsque l'utilisateur relève le doigt), l'événement OnGesture est déclenché (si un mouvement standard a été reconnu).
  • Mouvements interactifs :
    • Les mouvements interactifs sont des mouvements multi-tactiles (Zoom, Rotation, etc.) qui sont équivalents aux mouvements système sur Windows, et aux mouvements sur macOS, iOS et Android. Chaque fois que les doigts se déplacent sur la surface tactile, un événement OnGesture est déclenché.
    • FireMonkey utilise les quatre mouvements standard Haut, Bas, Gauche et Droite comme équivalents du mouvement interactif Balayer (sur macOS, iOS, Android et Windows 8).

Plates-formes pour les mouvements

Cette rubrique décrit les mouvements pour les plates-formes de bureau et les plates-formes mobiles :

  • Toutes les plates-formes de bureau prennent en charge les mouvements.
    Pour les écrans tactiles Windows, même si le doigt est relevé de l'écran en dehors des limites du contrôle souhaité, le mouvement est toujours envoyé à ce contrôle.
  • Toutes les plates-formes mobiles prennent en charge les mouvements interactifs. Voir Activation des mouvements interactifs.

Comment utiliser les mouvements avec FireMonkey

Pour qu'un contrôle soit capable d'utiliser les mouvements, il doit disposer de la propriété Touch. TForm et de nombreux objets dérivés de TFmxObject prennent en charge cette propriété.

Activation des mouvements standard

Pour ajouter la prise en charge des mouvements standard pour un contrôle, vous devez effectuer les opérations suivantes :

  1. Sur le Concepteur de fiches, ajoutez un TGestureManager au contrôle auquel vous souhaitez attribuer la prise en charge des mouvements. Donnez un nom unique au GestureManager ou utilisez simplement son nom assigné, tel que GestureManager1.
  2. Dans l'inspecteur d'objets, assignez le TGestureManager dans le champ Touch | GestureManager du contrôle.
  3. Dans l'inspecteur d'objets, sélectionnez les mouvements personnalisés spécifiques depuis le champ Touch | Gestures du contrôle.
  4. Implémentez la procédure d'événement OnGesture pour ce contrôle et gérez le EventInfo.GestureId approprié.

Sélection d'un mouvement standard

Voici les mouvements de Enumération TStandardGesture tels qu'ils se présentent à vous lorsque vous les sélectionnez dans l'inspecteur d'objets :

FMX.Touch2.png

Implémentation du gestionnaire d'événement OnGesture

Voici un exemple de procédure OnGesture pour un TPanel nommé "Panel1" et placé sur un TForm nommé "Form 28" (il y a aussi un TMemo nommé "TMemo1" sur la fiche). Le gestionnaire d'événement utilise FMX.Gestures.GestureToIdent :

Dans Delphi :

procedure TForm28.Panel1Gesture(Sender: TObject;
  const EventInfo: TGestureEventInfo; var Handled: Boolean);
var
  S: string;
begin
  if GestureToIdent(EventInfo.GestureID, S) then begin
    Memo1.Lines.Add(S);
    Handled := True;
  end;
end;

Dans C++ :

void __fastcall TForm1::Panel1Gesture(TObject *Sender,
        const TGestureEventInfo &EventInfo, bool &Handled) {
        String s;
        if (GestureToIdent(EventInfo.GestureID, s)) {
                Memo1->Lines->Add(s);
                Handled = true;
        }
}

Le code ci-dessus écrit dans le mémo le nom du mouvement pour lequel l'événement a été déclenché (Haut, Bas, etc.).

Activation des mouvements interactifs

Pour ajouter la prise en charge des mouvements interactifs à un contrôle :

  1. Dans l'inspecteur d'objets, sélectionnez les mouvements interactifs spécifiques depuis le champ Touch | InteractiveGestures du contrôle.
  2. Implémentez une procédure d'événement OnGesture pour ce contrôle et gérez le EventInfo.GestureId approprié.


  Propriétés de mouvements initiales pour un projet Android   Mouvements spécifiques activés

Propriétés de mouvements initiales pour un projet Android

Mouvements spécifiques activés


Différences entre les mouvements de base pris en charge dans FireMonkey et dans la VCL

  • FireMonkey prend en charge TouchTargetExpansion, une propriété qui étend la cible tactile d'un contrôle en ajoutant une zone spécifiée autour du contrôle ; cette zone peut être activée tactilement comme si elle faisait partie du contrôle. (La VCL ne prend pas en charge TouchTargetExpansion.)
  • Les mouvements interactifs pris en charge sont décrits dans FMX.Types.TInteractiveGestures et dans Vcl.Controls.TInteractiveGestures.
    • Sur les plates-formes Windows :
      • FireMonkey prend en charge les mouvements interactifs suivants : Zoom, Panoramique, Rotation, Cliquer avec deux doigts, Appuyer et cliquer, Double appui et Appui prolongé. (Cela est identique à la VCL.)
    • Sur macOS :
      • FireMonkey prend uniquement en charge les mouvements interactifs Zoom, Panoramique et Rotation. (La VCL ne prend pas en charge le développement sur Mac.)
    • Sur iOS :
      • FireMonkey prend en charge Zoom, Panoramique, Rotation, Cliquer avec deux doigts, Double appui et Appui prolongé (La VCL ne prend pas en charge le développement sur iOS.)
    • Sur Android :
      • FireMonkey prend en charge les mêmes mouvements sur Android que sur les plates-formes iOS : Zoom, Panoramique, Rotation, Cliquer avec deux doigts, Double appui, et Appui prolongé.
  • FireMonkey ne prend pas en charge les mouvements personnalisés. (La VCL prend en charge les mouvements personnalisés.)
    • Les propriétés TabletOptions ne sont pas prises en charge dans FireMonkey.
  • Les mouvements de la souris fonctionnent seulement sur Windows 7 et Windows 8.
  • Sur Windows 8, les mouvements interactifs et les mouvements standard ne peuvent pas être utilisés en même temps.

Voir aussi

Exemples de code