程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager

Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager

編輯:Delphi

Delphi 2010 最搶眼的新功能可能就是支持"觸摸屏"了, 它包括一個 可觸控的軟鍵盤 和識別不同的觸屏手勢.

因為手勢同時支持鼠標, 所以沒有觸摸屏的我也可以嘗試一下其大多數的功能.


首次嘗試的步驟:

1、加 TGestureManager 控件如窗體: GestureManager1;

2、設置窗體屬性 Touch.GestureManager := GestureManager1; {下面程序是在設計時指定的屬性}

3、添加窗體的 OnGesture 事件, 隨便寫點什麼;

4、然後運行程序, 用鼠標隨便在窗體上 "劃" 幾下... 第一個測試程序完成了!


測試代碼:

unit Unit1; 
 
interface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, GestureMgr; 
 
type 
 TForm1 = class(TForm) 
  GestureManager1: TGestureManager; 
  procedure FormCreate(Sender: TObject); 
  procedure FormGesture(Sender: TObject; const EventInfo: TGestureEventInfo; 
   var Handled: Boolean); 
 end; 
 
var 
 Form1: TForm1; 
 
implementation 
 
{$R *.dfm}  
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 Self.Touch.GestureManager := GestureManager1; {可在設計時指定}  
end; 
 
procedure TForm1.FormGesture(Sender: TObject; 
 const EventInfo: TGestureEventInfo; var Handled: Boolean); 
begin 
 ShowMessage(Sender.ClassName + '_Gesture'); 
end; 
 
end. 


現在程序可以 "感知手勢" 了, 怎麼 "識別手勢" 呢? 

Delphi 把可以識別的手勢分成了 3 類: 標准手勢、自定義手勢、交互手勢(InteractiveGestures).

其中的交互手勢用鼠標不好模擬, 可能只能用於觸摸屏;

Delphi 預定義了 34 種標准手勢, 並定義成 TStandardGesture 枚舉類型:

TStandardGesture = ( 
 sgLeft      = sgiLeft, 
 sgRight      = sgiRight, 
 sgUp       = sgiUp, 
 sgDown      = sgiDown, 
 sgUpLeft     = sgiUpLeft, 
 sgUpRight     = sgiUpRight, 
 sgDownLeft    = sgiDownLeft, 
 sgDownRight    = sgiDownRight, 
 sgLeftUp     = sgiLeftUp, 
 sgLeftDown    = sgiLeftDown, 
 sgRightUp     = sgiRightUp, 
 sgRightDown    = sgiRightDown, 
 sgUpDown     = sgiUpDown, 
 sgDownUp     = sgiDownUp, 
 sgLeftRight    = sgiLeftRight, 
 sgRightLeft    = sgiRightLeft, 
 sgUpLeftLong   = sgiUpLeftLong, 
 sgUpRightLong   = sgiUpRightLong, 
 sgDownLeftLong  = sgiDownLeftLong, 
 sgDownRightLong  = sgiDownRightLong, 
 sgScratchout   = sgiScratchout, 
 sgTriangle    = sgiTriangle, 
 sgSquare     = sgiSquare, 
 sgCheck      = sgiCheck, 
 sgCurlicue    = sgiCurlicue, 
 sgDoubleCurlicue = sgiDoubleCurlicue, 
 sgCircle     = sgiCircle, 
 sgDoubleCircle  = sgiDoubleCircle, 
 sgSemiCircleLeft = sgiSemiCircleLeft, 
 sgSemiCircleRight = sgiSemiCircleRight, 
 sgChevronUp    = sgiChevronUp, 
 sgChevronDown   = sgiChevronDown, 
 sgChevronLeft   = sgiChevronLeft, 
 sgChevronRight  = sgiChevronRight); 


注意: 每個枚舉項都對應了一個常數值(譬如: 枚舉項 sgLeft 對應 sgiLeft, sgiLeft 是之前定義好的常數);

應記下常數的命名規律, 後面會經常用到它們, 以區別觸發的是哪個手勢, 譬如:

if EventInfo.GestureID = sgiLeft then ... 


下面是從 docwiki.embarcadero.com/RADStudio/en/TStandardGesture_Enum 拷過來的標准手勢的圖示:

Enum Symbol sgLeft Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgRight Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgUp Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDown Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgUpLeft Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgUpRight Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDownLeft Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDownRight Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgLeftUp Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgLeftDown Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgRightUp Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgRightDown Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgUpDown Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDownUp Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgLeftRight Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgRightLeft Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgUpLeftLong Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgUpRightLong Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDownLeftLong Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDownRightLong Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgScratchout Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgTriangle Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgSquare Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgCheck Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgCurlicue Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDoubleCurlicue Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgCircle Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgDoubleCircle Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgSemiCircleLeft Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgSemiCircleRight Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgChevronUp Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgChevronDown Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgChevronLeft Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager sgChevronRight Delphi 2010 新增功能之: 手勢編程[1] - 初識 TGestureManager


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved