Gesten in FireMonkey

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey-Anwendungshandbuch


Gesten in geräteübergreifenden Anwendungen entsprechen weitgehend den Gesten in der VCL. Eine Geste ist für das Steuerelement bestimmt, das sich unter dem Finger (bei Windows und mobilen Anwendungen) oder unter dem Mauscursor (bei Windows und macOS) befindet. Alternativ kann die Geste auch von einem dem Steuerelement übergeordneten Objekt (in der Hierarchie das erste, das die Geste behandeln kann) behandelt werden.

Es gibt zwei Typen von Gesten:

  • Standardgesten:
    • Die Standardgesten (Nach oben, Nach unten, Dreieck usw.) entsprechen den Anwendungsgesten unter Windows und den Mehrfinger-Folgen unter macOS und iOS. Standardgesten werden unter Windows mit einem Finger und unter macOS mit zwei Fingern ausgeführt.
    • Wenn die Geste abgeschlossen ist (wenn der Benutzer den Finger hebt), wird das Ereignis OnGesture ausgelöst (sofern eine Standardgeste erkannt wurde).
  • Interaktive Gesten:
    • Bei den interaktiven Gesten handelt es sich um Mehrfingergesten (Zoom, Drehen usw.), die den Systemgesten unter Windows und den Gesten unter macOS, iOS und Android entsprechen. Bei jeder Fingerbewegung auf der Touch-Oberfläche wird ein OnGesture-Ereignis ausgelöst.
    • FireMonkey verwendet die vier Standardgesten Nach oben, Nach unten, Nach links und Nach rechts als Äquivalent zur interaktiven Wischen-Geste (unter macOS, iOS, Android und Windows 8).

Plattformen für Gesten

In diesem Thema werden Gesten für Desktop- und mobile Plattformen beschrieben:

  • Alle Desktop-Plattformen unterstützten Gesten.
    Bei Windows-Touch-Screens wird, auch wenn der Finger außerhalb der Begrenzungen des betreffenden Steuerelements gehoben wird, die Geste an dieses Steuerelement gesendet.
  • Alle mobilen Plattformen unterstützten interaktive Gesten. Siehe Aktivieren von interaktiven Gesten.

Verwendung von Gesten in FireMonkey

Damit ein Steuerelement mit Gesten verwendet werden kann, muss es über die Eigenschaft Touch verfügen. TForm und viele von TFmxObject abgeleitete Objekte haben diese Eigenschaft.

Aktivieren von Standardgesten

Führen Sie zum Hinzufügen der Unterstützung von Standardgesten für ein Steuerelement folgende Schritte aus:

  1. Fügen Sie im Formular-Designer dem Steuerelement, das für Gesten aktiviert werden soll, einen TGestureManager hinzu. Weisen Sie der GestureManager-Instanz einen eindeutigen Namen zu, oder verwenden Sie einfach den zugewiesenen Namen, z. B. GestureManager1.
  2. Weisen Sie im Objektinspektor im Feld Touch | GestureManager des Steuerelements das TGestureManager-Objekt zu.
  3. Wählen Sie im Objektinspektor die spezifische(n) benutzerdefinierte(n) Geste(n) im Feld Touch | Gestures des Steuerelements aus.
  4. Implementieren Sie die Ereignisbehandlungsroutine OnGesture für das Steuerelement, und behandeln Sie die entsprechende EventInfo.GestureId.

Auswählen einer Standardgeste

Diese Gesten aus der Aufzählung der Standardgesten können Sie im Objektinspektor auswählen:

FMX.Touch2.png

Implementieren der OnGesture-Ereignisbehandlungsroutine

Im Folgenden finden Sie ein Beispiel einer OnGesture-Prozedur für die TPanel-Komponente "Panel1", die sich auf dem TForm-Formular "Form 28" befindet (außerdem enthält das Formular noch das TMemo-Feld "TMemo1"). Die Ereignisbehandlungsroutine verwendet FMX.Gestures.GestureToIdent:

In 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;

In 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;
        }
}

Mit dem obigen Code wird der Name der Geste (Up, Down usw.), für die das Ereignis ausgelöst wurde, in das Memofeld geschrieben.

Aktivieren von interaktiven Gesten

So fügen Sie die Unterstützung von interaktiven Gesten für ein Steuerelement hinzu:

  1. Wählen Sie im Objektinspektor die spezifische(n) interaktive(n) Geste(n) aus dem Feld Touch | InteractiveGestures des Steuerelements aus.
  2. Implementieren Sie eine OnGesture-Ereignisbehandlungsroutine (Prozedur) für dieses Steuerelement, und behandeln Sie die entsprechende EventInfo.GestureId.


  Anfangseigenschaften für Gesten in einem Android-Projekt   Aktivierung bestimmter Gesten

Anfangseigenschaften für Gesten in einem Android-Projekt

Aktivierung bestimmter Gesten


Unterschiede zwischen Gesten in FireMonkey und in der VCL

  • FireMonkey unterstützt TouchTargetExpansion, eine Eigenschaft, die das Touch-Ziel eines Steuerelements durch Hinzufügen einer speziellen Zone um das Steuerelement erweitert, die für Berührungen aktiviert werden kann, so als ob sie Teil des Steuerelements ist. (Die VCL unterstützt TouchTargetExpansion nicht.)
  • Unterstützte interaktive Gesten sind unter FMX.Types.TInteractiveGestures und Vcl.Controls.TInteractiveGestures beschrieben.
    • Windows-Plattformen:
      • FireMonkey unterstützt die folgenden interaktiven Gesten: Zoom, Verschieben, Drehen, Antippen mit zwei Fingern, Drücken und Antippen, Doppeltippen und Langes Antippen. (Entspricht der Unterstützung durch die VCL.)
    • macOS:
      • FireMonkey unterstützt nur die interaktiven Gesten: Zoom, Verschieben und Drehen . (Die VCL unterstützt die Entwicklung auf dem Mac nicht.)
    • iOS:
      • FireMonkey unterstützt die interaktiven Gesten Zoom, Verschieben, Drehen, Antippen mit zwei Fingern, Doppeltippen und Langes Antippen (die VCL unterstützt die Entwicklung unter iOS nicht).
    • Android:
      • FireMonkey unterstützt auf der Android-Plattform dieselben Gesten wie auf der iOS-Plattform: Zoom, Verschieben, Drehen, Antippen mit zwei Fingern, Doppeltippen und Langes Antippen.
  • Benutzerdefinierte Gesten werden derzeit von FireMonkey nicht unterstützt. (Die VCL unterstützt benutzerdefinierte Gesten.)
  • Mausgesten funktionieren nur unter Windows 7 und Windows 8.
  • Unter Windows 8 können interaktive und Standardgesten nicht gleichzeitig verwendet werden.

Siehe auch

Codebeispiele