vložil Radek Červinka
23. prosince 2009 22:08
Nové Windows 7 obsahují podporu pro gestures (gesta - rozeznávání pohybu myši nebo dotyku na touch screenu). Jedná se o velmi užitečné rozšíření zvláště pro multitouch obrazovky popř. kiosky, i když např. taková Opera používá gesta i pro myš.
Ale jelikož je oficiálně podpora od MS jen pro Windows 7, byla autory Delphi přidána do nové verze Delphi podpora i pro XP a Vista (a 2000 asi taky). Navíc byla přidána virtuální klávesnice.

Základem je TGestureManager, kde jsou definována jednotlivá gesta, přičemž v základu je jich již pěkná řádka a v editoru gest se dají doplnit další. Gesta se dají ukládat do souboru.

V designeru lze i nové gesto otestovat, popř. program automaticky hlásí možné problémy s již existujícími gesty.

Standardní gesta
Nyní když máme gesta nadefinované (nebo použijeme některé ze standardních) je čas je využít.
Implementačně je to provedeno tak, že v TControl je nová property Touch: TTouchManager (který má property TGestureManager pro případ nově definovaných gest), takže každý control má možnost využívat těchto gest. V praxi pak jen obsloužíte OnGesture event handler.
1procedure TForm1.FormGesture(Sender: TObject;
2 const EventInfo: TGestureEventInfo; var Handled: Boolean);
3begin
4 case EventInfo.GestureID of
5 sgiLeft:
6 ShowMessage('Vlevo');
7 sgiRight:
8 ShowMessage('Vpravo');
9 end;
10end;
EventInfo: TGestureEventInfo obsahuje všechny potřebné informace (hlavní je GestureID):
1TGestureEventInfo = record
2 GestureID: TGestureID;
3 Location: TPoint;
4 Flags: TInteractiveGestureFlags;
5 Angle: Double;
6 InertiaVector: TSmallPoint;
7 case Integer of
8 0: (Distance: Integer);
9 1: (TapLocation: TSmallPoint);
10 end;
Kromě uvedených obsahuje TTouchManager i speciální podporu pro tablety atd.

TGestureListView
TGestureListView je následníkem TListView a zobrazuje název gesta spolu s jeho náhledem.

1procedure TForm1.FormCreate(Sender: TObject);
2begin
3 GestureListView1.AddGesture(sgiLeft);
4 GestureListView1.AddGesture(sgiLeftDown);
5end;
Další komponenty ohledně gest
TGesturePreview zobrazuje náhled gesta a TGestureRecord je panel, který umožňuje záznam gesta.
Nová je i virtuální klávesnice TTouchKeyboard a ta může být ve dvou módech: klasická nebo jako numlock. Na klávesnici se dají specifikovat barvy pro kreslení gradientů. Klikání na klávesnici je ekvivalentní stisku kláves.

Dvakrát TTouchKeyboard