ジェスチャ機能の概要
VCL への移動
VCL および FireMonkey は、RAD Studio ジェスチャ フレームワークを使用していますが、それは FireMonkey ライブラリと VCL ライブラリに別々に実装されています。 ジェスチャ機能に関係する VCL および FMX のクラス、メソッド、プロパティは、2 つのライブラリで類似していますが、ユニット名は異なる場合があります(たとえば、Vcl.Controls に対し FMX.Types など)。 すべてのプラットフォームにおいて、VCL と FireMonkey の両方が、標準ジェスチャだけでなく、対話型ジェスチャ(Vcl.Controls.TInteractiveGesture と FMX.Types.TInteractiveGesture)の使用をサポートしています。
ジェスチャ利用の詳細については、ビデオ『RAD Studio 2010 のタッチおよびジェスチャ機能』と『Delphi 2010:タッチ機能とジェスチャの利用』を参照してください。
目次
ジェスチャとは
ジェスチャ フレームワークにより、VCL および FireMonkey アプリケーションでジェスチャ(タッチ ハードウェアで提供される代替入力手段)を使用することができます。 ジェスチャはタッチ デバイスを使って行われる動作で、イベントやアクションをトリガするものです。
使用される基本的なタッチ デバイスは次のとおりです:
- 指
- ペン
- マウス
ジェスチャ機能の選択可能な構成要素
TControl から派生したコンポーネントの大半は Touch プロパティを公開し、ジェスチャ機能オプションを備えています。 コンポーネントに GestureManager を割り当てると、[オブジェクト インスペクタ]の[Touch]プロパティの下に、以下の標準のジェスチャ機能オプションが表示されます。 詳細は、「アプリケーションでジェスチャを使用する」を参照してください。
標準ジェスチャ
標準ジェスチャ ライブラリは、Left、Right、Scratchout、Circle、ChevronUp などの 30 個を上回るジェスチャで構成されます。 これらのジェスチャは、列挙型 FMX.Types.TStandardGesture または Vcl.Controls.TStandardGesture と関連づけられます。
すべての標準ジェスチャとその説明の一覧については、「列挙型 TStandardGesture」を参照してください。
対話型ジェスチャ
対話型ジェスチャは、ジェスチャが実行されるにつれて連続的に OnGesture イベントを発生させるマルチタッチ ジェスチャです。 パン、ズーム、回転、2 本指タップ、タップ アンド プレスなどが含まれます。 OnGesture イベントの EventInfo パラメータには、タッチ ポイントの位置、回転角度、パン動作の慣性といった、実行中のジェスチャに関する追加情報が含まれています。 対話型ジェスチャを使用するにはマルチタッチ対応のオペレーティング システムが必要であり、対話型ジェスチャはタッチ入力デバイスからしか呼び出せません。 対話型ジェスチャは、列挙型 FMX.Types.TInteractiveGesture または Vcl.Controls.TInteractiveGesture と関連づけられます。
サポートされている InteractiveGestures は次のおりです: "ズーム, "版", "回転", "2 本指タップ", "ロング タップ", "ダブル タップ", and "プレス アンド タップ"。
InteractiveGestureOptions(VCL のみ)
InteractiveGestureOptions は Vcl.Controls.TInteractiveGestureOption 列挙型と関連づけられており、対話型ジェスチャの特定の属性を制御することができます。
サポートされている InteractiveGestureOptions は以下のとおりです。
- igoPanSingleFingerHorizontal
- igoPanSingleFingerVertical
- igoPanInertia
- igoPanGutter
- igoParentPassThrough
TabletOptions
TabletOptions は、VCL フレームワークでのみサポートされています。 これらのオプションは、指またはペンによる入力専用のもので、列挙型 Vcl.Controls.TTabletOption と関連づけられます。 TabletOptions は、タブレット PC、Windows 7 でサポートされています。
サポートされている TabletOptions は以下のとおりです。
- toPressAndHold
- toPenTapFeedback
- toPenBarrelFeedback
- toTouchUIForceOn
- toTouchUIForceOff
- toTouchSwitch
- toFlicks
- toSmoothScrolling
- toFlickFallbackKeys
OnGesture イベント
ジェスチャ機能をサポートしている VCL または FireMonkey コンポーネントはすべて、Vcl.Controls.TControl.OnGesture または FMX.Controls.TControl.OnGesture イベントをサポートします。
OnGesture イベントは、次の 2 つの場合に発生します:
- ジェスチャ エンジンが、次のようなジェスチャを認識したとき:
- 標準ジェスチャ(ジェスチャ マネージャを通じて使用可能な 34 個のジェスチャから成るライブラリ)
- 独自のカスタム ジェスチャ([カスタム ジェスチャ デザイナ]を使って作成されるジェスチャ)
- 登録済みジェスチャ(パッケージまたは DLL に格納されているジェスチャ)
- アプリケーションが対話型ジェスチャを使用したとき
OnGesture は、ジェスチャ エンジンがマッチングを試みた後でトリガされます。 このイベントは、処理する必要のある ジェスチャ ID のマッチングが失敗したときも発生します(Vcl.Controls.TCustomGestureCollectionItem.GestureID や FMX.Types.TCustomGestureCollectionItem.GestureID など)。
オブジェクト インスペクタで特定のジェスチャに、アクションを関連づけます。 一貫性を保つため、1 つのアプリケーション内の該当するすべてのコンポーネントでも、異なるアプリケーション間でも、同じアクションには同じジェスチャを使用します。
さらなる情報については、Vcl.Controls.TControl.OnGesture または FMX.Controls.TControl.OnGesture を参照してください。
コード サンプル
TGestureManager コンポーネント
標準ジェスチャやカスタム ジェスチャ を使用する各コンポーネントは、ジェスチャ マネージャ(FMX.Gestures.TGestureManager や Vcl.Touch.GestureMgr.TGestureManager など)で関連づけられる必要があります。 コンポーネントのズームや回転などで対話型ジェスチャを使用するには、コンポーネントをジェスチャ マネージャで関連づけなければなりません。
使用するコンポーネントを選択するに当たっては、(パネル コンポーネントやリスト コンポーネントなどの)大規模なコンポーネントはジェスチャ機能との相性が良いのに対して、ボタンやチェック ボックスなどの小規模なコンポーネントは通常、ジェスチャの使用にはあまり適していないことを念頭に置いてください。
まず、パネル コンポーネントやリスト コンポーネントに TGestureManager を追加します([ツール パレット]で[Gestures]カテゴリから[TGestureManager]を選択します)。
すべての VCL ジェスチャ マネージャ コンポーネントの抽象基底クラスは、Vcl.Controls.TCustomTouchManager.GestureManager です。
ジェスチャ プロパティ エディタでのジェスチャの選択
現在選択している設計要素に GestureManager を割り当てると、ジェスチャ プロパティ エディタにアクセスできるようになります。 [オブジェクト インスペクタ]で、[Touch]ノードおよびその後に[Gestures]ノードを開きます。 ジェスチャ プロパティ エディタを開くには、[Gestures]ノードに付いている参照ボタン()をクリックします。 作業中は、このプロパティ エディタ ウィンドウを参照用に、またはジェスチャ パレットやテスト画面として開いたままにしておくことができます。
プロパティ エディタ ウィンドウ("ジェスチャの選択" というタイトルが付いているもの)では、以下の操作を行えます。
- アプリケーションに組み込むジェスチャの選択と、各ジェスチャへのアクションの割り当て
- [カスタム ジェスチャ]ダイアログ ボックス(カスタム ジェスチャの管理と作成が可能)へのアクセス
メモ:[ジェスチャの選択]ウィンドウは、FireMonkey ではサポートされていません。
ジェスチャへのアクションの割り当て
TActionList か TActionManager のどちらかをフォームに追加することで、ジェスチャに手早くアクションを追加できます。 その後で、ジェスチャ プロパティ エディタ([ジェスチャの選択])と[オブジェクト インスペクタ]、または[オブジェクト インスペクタ]だけを使って、以下のように各ジェスチャにアクションを割り当てます。
- 使用するジェスチャを[ジェスチャの選択]ダイアログ ボックスで選択した後、[オブジェクト インスペクタ]内のドロップダウン リストを使って、そのジェスチャにアクションを割り当てます。
- [オブジェクト インスペクタ]で、使用するジェスチャを選択します(または、[ジェスチャの選択]ダイアログ ボックスで有効にしたジェスチャを見つけます)。 値列のドロップダウン リストには、使用可能なアクション(特に[標準アクションの新規作成])が一覧表示されます。 ジェスチャに関連付けるアクションをリストから選択します。
メモ: TActionList または TActionManager をフォームに追加しない場合は、[標準アクションの新規作成]から選択することはできず、OnGesture イベントの独自のイベント ハンドラを記述する必要があります。
カスタム ジェスチャの作成(VCL のみ)
カスタム ジェスチャの作成は、VCL フレームワークでのみサポートされています。独自のカスタム ジェスチャの作成は、カスタム ジェスチャ デザイナで行うことができます。
[カスタム ジェスチャ デザイナ]ダイアログ ボックスで入力したジェスチャが、アプリケーションで使用している他のジェスチャのいずれかに酷似している場合は、警告が表示され、競合を詳しく調べることができます。 既存のジェスチャと競合している場合は、アプリケーションでエラーが発生するおそれがあります。 また、作成または表示しているカスタム ジェスチャと他のジェスチャの比較の感度を調整することもできます。
[カスタム ジェスチャ]ダイアログ ボックスで、カスタム ジェスチャを管理できます。 該当するボタンで、ジェスチャの編集、削除、インポート、エクスポートが可能です。 詳細については、「カスタム ジェスチャの作成」を参照してください。
他のジェスチャ コンポーネント
- TGestureListView を TGestureManager に関連付けると、ジェスチャ マネージャにジェスチャのリストを表示できます。 ジェスチャはまた、プログラムで追加や削除を行ってカスタマイズすることもできます。
- TGesturePreview は、IDE で([ジェスチャの選択]ダイアログ ボックスでジェスチャをダブルクリックすることで)使用するのと同じプレビュー コンポーネントで、ジェスチャの実行方法をアニメーションで表示します。
- TGestureRecorder は、ジェスチャを入力し後で使用できるように記録するためのものです。 このコンポーネントを使用すると、特定のアクションに関連付けられたジェスチャをエンド ユーザーがカスタマイズできるアプリケーションを作成することができます。
関連項目
- アプリケーションでジェスチャを使用する
- カスタム ジェスチャを作成する
- [カスタム ジェスチャ]ダイアログ ボックス
- [カスタム ジェスチャ デザイナ]ダイアログ ボックス
- FireMonkey でのジェスチャ
- Metropolis UI アプリケーションでのジェスチャ サポート
- Vcl.Touch.Gestures.TGestureEngine
- FMX.Gestures.TGestureEngine
- Vcl.Touch.GestureCtrls.TGestureListView
- Vcl.Touch.GestureCtrls.TGesturePreview
- Vcl.Touch.GestureCtrls.TGestureRecorder
- FMXInteractiveGestures (Delphi)
- 『ビデオ:RAD Studio 2010 のタッチおよびジェスチャ機能)』(英語版)
- 『ビデオ:Delphi 2010: タッチ機能とジェスチャの使用)』(英語版)