FireMonkey でのジェスチャ

提供: Appmethod Topics
移動先: 案内検索

FireMonkey アプリケーション ガイド への移動


ジェスチャは、指もと(Windows およびモバイル アプリケーションの場合)かマウス カーソル下(Windows および Mac OS X の場合)にあるコントロールを対象としたものであると見なされます。 あるいは、ジェスチャはそのコントロールの親の 1 つ(階層内でそのジェスチャを最初に処理するもの)で処理することができます。

ジェスチャには以下の 2 種類があります。

  • 標準ジェスチャ:
    • 標準ジェスチャ(Up、Down、Triangle など)は、Windows のアプリケーション ジェスチャや Mac OS X のマルチタッチ シーケンスと同等のものです。標準ジェスチャは、Windows では 1 本指で、Mac OS X では 2 本で、それぞれ行われます。
    • ジェスチャが完了した際(ユーザーが指を持ち上げたとき)に、OnGesture イベントが発生します(標準ジェスチャが認識された場合)。
  • 対話型ジェスチャ:
    • interactive gestures はマルチタッチ ジェスチャ(Zoom、Rotate、など)で、Windows のシステム ジェスチャや、Mac OS X、iOS、Android のジェスチャと同等です。 指がタッチ画面上を移動するたびに、OnGesture イベントが発生します。
    • FireMonkey は、対話型スワイプ ジェスチャ(Mac OS X、iOS、Android、Windows 8)と同等の 4 個の標準ジェスチャ()を使用します。

ジェスチャのプラットフォーム

このトピックでは、デスクトップ アプリケーションとモバイル プラットフォームのジェスチャについて説明します。

  • デスクトップ プラットフォームすべてにおいて、ジェスチャをサポートされています。
    Windows のタッチ画面の場合、対象となるコントロールの境界外では、指が画面から持ち上げられたとしても、ジェスチャは依然としてそのコントロールに送られます。
  • モバイル プラットフォームすべてにおいて、対話型ジェスチャがサポートされています。 「

対話型ジェスチャを有効にする」を参照してください。

FireMonkey でのジェスチャの使用方法

コントロールでジェスチャを使用できるようにするには、そのコントロールに Touch プロパティが必要です。TForm のほか、TFmxObject から派生したオブジェクトの多くがこのプロパティをサポートしています。

標準ジェスチャを有効にする

標準ジェスチャをコントロールでサポートするには、以下を行う必要があります。

  1. フォーム デザイナで、ジェスチャに対するコントロールに TGestureManager を追加します。 GestureManager に一意の名前を付けるか、割り当てられた GestureManager1 などの名前をそのまま使用します。
  2. [オブジェクト インスペクタ]で、コントロールの[Touch|GestureManager]フィールドに TGestureManager を割り当てます。
  3. [オブジェクト インスペクタ]で、コントロールの[Touch|Gestures]フィールドから特定のカスタム ジェスチャ(複数可)を選択します。
  4. そのコントロールの OnGesture イベント ハンドラを実装し、適切な EventInfo.GestureId を処理します。

標準ジェスチャを選択する

以下に示すのは、列挙型 TStandardGesture に定義されているジェスチャで、[オブジェクト インスペクタ]で選択できるように提供されています。

FMX.Touch2.png

OnGesture イベント ハンドラを実装する

"Form 28" という TForm に配置された "Panel1" という TPanelOnGesture 手続きの例を以下に示します(フォームには "TMemo1" という TMemo もあります)。このイベント ハンドラは、FMX.Gestures.GestureToIdent を使用します。

Object Pascal の場合:

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;

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

上記のコードでは、イベントの発生原因となったジェスチャの名前(UpZoom など)をメモに書き込んでいます。

対話型ジェスチャを有効にする

対話型ジェスチャをコントロールでサポートするには:

  1. [オブジェクト インスペクタ]で、コントロールの[Touch | InteractiveGesturesフィールドから特定の対話型ジェスチャを選択します。
  2. そのコントロールの OnGesture イベント ハンドラ(手続き)を実装し、適切な EventInfo.GestureId を処理します。


  Android プロジェクト用ジェスチャ プロパティの初期状態   個別ジェスチャを有効にした状態

Android プロジェクト用ジェスチャ プロパティの初期状態

個別ジェスチャを有効にした状態



FireMonkey でサポートされる主なジェスチャ

  • FireMonkey では TouchTargetExpansion をサポートしています。これは、タッチで起動できるコントロールの周りの指定ゾーンを、あたかもコントロールの一部であるかのように追加することで、コントロールのタッチ ターゲットを拡張するプロパティです。
  • サポートされている対話型ジェスチャについては、「FMX.Types.TInteractiveGestures」で説明されています。
    • Windows プラットフォームの場合:
      • FireMonkey では、次のinteractive gesturesをサポートしています: ズームパン回転2 本指タッププレス アンド タップダブルタップロング タップ
    • Mac OS X の場合:
      • FireMonkey でサポートしている対話型ジェスチャは、ズームパン回転のみです。
    • iOS の場合:
      • FireMonkey は、ズームパン回転2 本指タップダブルタップロングタップ をサポートしています
    • Android の場合:
      • FireMonkey が Android 上でサポートしているジェスチャは、iOS プラットフォーム上のものと同じで、 ズームパン回転2 本指タップダブルタップロングタップです。
  • FireMonkey は、カスタム ジェスチャをサポートしていません。

関連項目


コード サンプル