Touch Features in EWB
by Erick Engelke
January 13, 2024
In my last blog article I made a space invaders styled game. But it didn’t work on many tablets, because they use Touch events and I didn’t program that in.
So I wrote a simple program to test Touch events: test program
You can use it to see which events are generated on your tablet.
-
when you touch the screen, the message sent is TouchStart
-
if you tap the screen, the TouchStart is sent then a TouchEnd
-
if you drag across the screen, a TouchStart followed by TouchMove’s but no TouchEnd is sent
-
successive moves just add more TouchMoves, with no TouchStart or TouchEnd.
Here’s the simple source code:[source,]
unit touchgui; interface uses WebCore, WebUI, WebForms, WebCtrls, WebLabels; type TForm1 = class(TForm) HTMLLabel1: THTMLLabel; procedure HTMLLabel1TouchCancel(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); procedure HTMLLabel1TouchEnd(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); procedure HTMLLabel1TouchMove(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); procedure HTMLLabel1TouchStart(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); private { Private declarations } procedure Label( s : string ); public { Public declarations } end; var Form1: TForm1; implementation procedure TForm1.Label( s : string ); begin HTMLLabel1.Content := s + '<br>' + htmlLabel1.Content; end; procedure TForm1.HTMLLabel1TouchCancel(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); begin label( 'Touch Cancel (x:'+IntToStr(x )+', y:' +inttostr( y )+')'); end; procedure TForm1.HTMLLabel1TouchEnd(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); begin label( 'Touch End (x:'+IntToStr(x )+', y:' +inttostr( y )+')'); end; procedure TForm1.HTMLLabel1TouchMove(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); begin label( 'Touch Move (x:'+IntToStr(x )+', y:' +inttostr( y )+')'); end; procedure TForm1.HTMLLabel1TouchStart(Sender: TObject; ShiftKey: Boolean; CtrlKey: Boolean; AltKey: Boolean; X: Integer; Y: Integer); begin label( 'Touch Start (x:'+IntToStr(x )+', y:' +inttostr( y )+')'); end; end.