AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX]ジェスチャ 2013/10/24
 
前回はデータベース関連のコンポーネントを確認しましたので、今回はその次ですが、[Vista Dialogs]内、[Touch]内、についてはコンポーネントが存在しませんので更に次の[Gestures]内のコンポーネントについて見ておきます
   【Delphi2010の記事はこちら】
   【DelphiXE3[VCLアプリケーション]の記事はこちら】
 
 
[Gestures]内
VCL
FMX
 
FireMonkey(FMX)VCL
(ヘルプより)
GestureManager
TGestureManager は、アプリケーションにおけるすべてのジェスチャを管理するクラスです。
 
TGestureManager は TCustomGestureManager の下位クラスで、VCL におけるデフォルトのジェスチャ マネージャです。
 
メモ: TGestureManager は、コントロールの登録済みジェスチャをすべて保持しています。 ジェスチャ マネージャを削除すると、その特定のジェスチャ マネージャに登録されているすべてのコントロールとそれらに関連付けられているジェスチャとの接続が失われることになります。
 
(ヘルプより)
FMX と VCL のジェスチャの違い
・FireMonkey では TouchTargetExpansion をサポートしています。これは、タッチで起動できるコントロールの周りの指定ゾーンをコントロールの一部として追加することで、コントロールのタッチ ターゲットを拡張するものです (VCL では TouchTargetExpansion がサポートされていません)。
 
・サポートされている対話型ジェスチャについては、「FMX.Types.TInteractiveGestures」で説明されています。
 ・Windows プラットフォームの FireMonkey では、対話型ジェスチャをサポートしています (これは VCL の場合と同じです)。
 ・Mac OS X の FireMonkey では、対話型ジェスチャのうち igZoom、igPan、igRotate のみをサポートしています (VCL では Mac 上の開発をサポートしていません)。
 
・FireMonkey では、カスタム ジェスチャをサポートしていません(VCL ではサポートされています)。
 ・Vcl.Controls.TCustomTouchManager と Vcl.Controls.TCustomTouchManager.TabletOptions は FireMonkey ではサポートされていません。
 
・マウス ジェスチャは Windows 7 および Windows 8 でのみ機能します。
 
・Windows 8 では、対話型ジェスチャと標準ジェスチャを同時に使用することはできません。
 ・Windows 8 のジェスチャ サポートの詳細は、「Metropolis UI アプリケーションでのジェスチャ サポート」を参照してください。
 
カスタムジェスチャはアプリケーション利用者にUIを提供するのも、うまく認識させる事が出来るか否か等もなかなか難しい場合が多いと思いますから、一般的なアプリとしてはそんなに重要ではないと思いますので別段無くても困らないでしょう。
MacOSでは「igTwoFingerTap」「igPressAndTap」に対応していないとの事ですが、この操作は私的には難しい(うまく認識しない場合が多い)ので別に必要無いかなとも思うので私は困らないと思います。
 
取り敢えず下記のように配置します。

 
パネル Panel1 の Touch→GestureManagerプロパティを GestureManager1 にします。

 
すると、標準ジェスチャ Touch→Gestures→Standard プロパティ内が利用出来るようになります。

 
取り敢えずこれら全部と、対話型ジェスチャ Touch→InteractiveGestures プロパティ内を全部、チェックを入れて、パネルのジェスチャイベントハンドラを下記のように記述します。
procedure TForm1.Panel1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
var
 fs,s : string ;
begin
 fs := '' ;
 if (TInteractiveGestureFlag.gfBegin in EventInfo.Flags) then
  fs := fs + '[BEGIN]' ;
 if (TInteractiveGestureFlag.gfInertia in EventInfo.Flags) then
  fs := fs + '[INERTIA]' ;
 if (TInteractiveGestureFlag.gfEnd in EventInfo.Flags) then
  fs := fs + '[END]';
 
 if not(GestureToIdent(EventInfo.GestureID, s)) then s := '---';
 
 Label1.Text := 'ID:'+IntToStr(EventInfo.GestureID) +#13+#10
  + 'Name:' + s +#13+#10
  + 'Location:' + FloatToStr(EventInfo.Location.X)
      + ',' + FloatToStr(EventInfo.Location.Y) +#13+#10
  + 'Flags:' + fs +#13+#10
  + 'Angle:' + FloatToStr(EventInfo.Angle) +#13+#10
  + 'Distance:' + IntToStr(EventInfo.Distance) +#13+#10
  + 'InertiaVector:' + FloatToStr(EventInfo.InertiaVector.X)
         + ',' + FloatToStr(EventInfo.InertiaVector.Y) +#13+#10
  + 'TapLocation:' + FloatToStr(EventInfo.TapLocation.X)
        + ',' + FloatToStr(EventInfo.TapLocation.Y) ;
 Handled := True ;
end;
 
保存・コンパイル・実行を行います。

右方向へドラッグ


 
Windows7・Windows8では、マウスでの標準ジェスチャは有効との事で、標準ジェスチャの動きは確認出来ます。対話型ジェスチャについては、タッチパネルのディスプレイを接続していませんので未確認です。ノートパソコンのタッチパッドは効きませんでした。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/10/24
 2013/10/24
▼2013/10/25
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.