FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Capture signature with Pad or Touchscreen
Posts: 663
Joined: Mon Dec 05, 2005 11:22 PM
Capture signature with Pad or Touchscreen
Posted: Fri Oct 31, 2014 05:22 PM

Has anyone used a Pad or Touchscreen to capture a signature? I have tried the sample program in the samples folder but it does not work very will. I might have to look into the Inking routines in the development tools or an 3rd party ActiveX but was hoping someone else might have already tackled this.
Thanks

Posts: 7318
Joined: Thu Oct 18, 2012 07:17 PM
Re: Capture signature with Pad or Touchscreen
Posted: Fri Oct 31, 2014 05:32 PM
there is a sample on fwh folder

here run ok
perkaps you must change

Code (fw): Select all Collapse
#include "FiveWin.ch" 

function CaptureSignature() 

   local oDlg, oSig, lPaint := .F., cFile := Lower( "signature.bmp" ), hDC 

   DEFINE DIALOG oDlg TITLE "Signature" FROM 0, 0 TO 150, 350 PIXEL 

   @ 15, 5 SAY oSig PROMPT "" SIZE 150, 40 PIXEL BORDER OF oDlg 
   
   @ 01, 5 BUTTON "Clear" SIZE 25, 10 PIXEL ACTION oSig:refresh(.t.) OF oDlg 
   
   @ 01, 60 BUTTON "Save" SIZE 25, 10 PIXEL OF odlg ;
      ACTION ( oSig:SaveToBmp( cFile ), oDlg:End() ) 

   oSig:lWantClick := .T.
   oSig:bLButtonUp := { | x, y, z | DoDraw( hDC, y+1, x+1, lPaint := .F. ) } 
   oSig:bMMoved    := { | x, y, z | DoDraw( hDC, y, x , lPaint ) } 
   oSig:bLClicked  := { | x, y, z | DoDraw( hDC, y, x, lPaint := .T. ) } 

   ACTIVATE DIALOG oDlg CENTER ;
      ON INIT ( hDC := GetDC( oSig:hWnd ) ) ;
      VALID ( ReleaseDC( oSig:hWnd, hDC ), .T. )

return nil

static function DoDraw( hDc, x, y, lPaint ) 

   if ! lPaint
      MoveTo( hDC, x, y ) 
   else 
      LineTo( hDc, x, y )
   endIf 

return nil




here run ok
perkaps you must change the size of oSay
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)

I use : FiveWin for Harbour March-April 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Posts: 663
Joined: Mon Dec 05, 2005 11:22 PM
Re: Capture signature with Pad or Touchscreen
Posted: Fri Oct 31, 2014 05:36 PM

I agree there is a sample with Fivewin. But like I said in my post it does not work well with Pad/Pen or Touchscreen. It is barely usable with a mouse but with touchscreen or pen it does not work very well at all.

Posts: 663
Joined: Mon Dec 05, 2005 11:22 PM
Re: Capture signature with Pad or Touchscreen
Posted: Mon Nov 03, 2014 04:10 PM

I have it so that it works using your finger to sign but the pen still has problems. I need to know when the pen actually touches the screen and not just hovers above it. When it is hovering above the screen (not touching) and you move the pen the mouse cursor moves with it so it triggers the line drawing.
It may work with the fatter stylus/pens but I am using the fine point pen that comes with Surface 3.

Posts: 663
Joined: Mon Dec 05, 2005 11:22 PM
Re: Solved: Capture signature with Pad or Touchscreen
Posted: Mon Nov 03, 2014 06:15 PM
This is the modified sample that seems to work pretty well. With mouse, hold the button down while you sign. With pen it inks when the tip is on the glass.
Code (fw): Select all Collapse
#include "FiveWin.ch"

function CaptureSignature()

   local oDlg, oSig, lPaint := .f., cFile := Lower( "signature.bmp" ), hDC

   DEFINE DIALOG oDlg TITLE "Signature" FROM 0, 0 TO 150, 350 PIXEL

   @ 15, 5 SAY oSig PROMPT "" SIZE 150, 40 PIXEL BORDER OF oDlg

   @ 01, 5 BUTTON "Clear" SIZE 25, 10 PIXEL ACTION oSig:refresh(.t.) OF oDlg

   @ 01, 60 BUTTON "Save" SIZE 25, 10 PIXEL OF odlg ;
      ACTION ( oSig:SaveToBmp( cFile ), oDlg:End() )

   oSig:lWantClick := .T.
   oSig:bLButtonUp := { | x, y, z | DoDraw( hDC, y, x, lPaint := .F. ) }
   oSig:bMMoved    := { | x, y, z | DoDraw( hDC, y, x , lPaint ) }
   oSig:bLClicked  := { | x, y, z | DoDraw( hDC, y, x, lPaint := .T., .t.  ) }

   ACTIVATE DIALOG oDlg CENTER ;
      ON INIT ( hDC := GetDC( oSig:hWnd ) ) ;
      VALID ( ReleaseDC( oSig:hWnd, hDC ), .T. )

return nil

static function DoDraw( hDc, x, y, lPaint, lReset )
   if lReset != nil .and. lReset
      MoveTo( hDC, x, y )
   endif
   if ! lPaint
      MoveTo( hDC, x, y )
   else
      LineTo( hDc, x, y )
   endIf
return nil
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Capture signature with Pad or Touchscreen
Posted: Tue Nov 04, 2014 10:06 PM

Gale,

many thanks! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion