windows - OnGesture begivenheder er tomme

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at få interaktiv gestegenkendelse (specifikt zoomning og panorering), der arbejder for min Delphi/C ++ Builder 10.2 Tokyo app.


Hvad jeg har gjort indtil videre:



  1. Tilføj en TGestureManager, GestureManager1 til min formular.

  2. Indstil formularen s Touch.GestureManager til GestureManager1.

  3. Lad alt under Touch.Gestures være afkrydset, fordi jeg vil have interaktive bevægelser (zoom og pan), ikke 'standard' -bevægelser.

  4. Sørg for at Touch.InteractiveGestures.igZoom er markeret.

  5. Tildel en OnGesture hændelseshåndterer.



Hændelseshåndtereren OnGesture udløses som forventet, men hændelsen 's EventInfo.GestureID (som formodes at give typen af ​​gestus - pan, zoom osv.) Er altid 0.


Hvad gør jeg forkert?

Bedste reference


'Standard' -bevægelser (de forskellige linjer og former under Touch.Gestures.Standard og 'interaktive' bevægelser (panorering, zoomning, roterende) er gensidigt eksklusive.


For at behandle 'standard' eller 'brugerdefinerede' bevægelser ', tilføj en TGestureManager.


For at modtage 'interaktive' bevægelser skal du fjerne TGestureManager. Denne Embarcadero DocWiki-artikel, der forklarer, hvordan gestus fungerer i VCL og FireMonkey, siger specifikt: [13]



  For at kunne bruge interaktive gestus som zoom og rotere i en komponent behøver du ikke at knytte komponenten sammen med en Gesture Manager. [14]



Denne Intel-artikel har flere detaljer om Windows 'forskellige gestusgrænseflader. Hvad Delphi kalder 'interaktive' gestus svarer til Windows 'WM\_GESTURE besked. [15]