Page 1 of 1

DCPUSHBUTTONXP work using Double Click?

Posted: Mon Apr 16, 2018 6:56 pm
by digitsoft
Hello Roger, how can I make the DCPUSHBUTTONXP work using Double Click?

Re: DCPUSHBUTTONXP work using Double Click?

Posted: Tue Apr 17, 2018 8:18 am
by rdonnay
Here is a simple way to do it in a custom event handler:

Code: Select all

#INCLUDE "dcdialog.CH"
#INCLUDE "appevent.CH"

FUNCTION Main()

LOCAL GetList[0], oButton

@ 0,0 DCPUSHBUTTONXP caption 'Testing' SIZE 20,2 ;
      ACTION {||(wtf 'activated')}

DCREAD GUI FIT HANDLER ButtonHandler

RETURN nil

* ----------

PROC appsys ; RETURN

* ----------

STATIC FUNCTION ButtonHandler( nEvent, mp1, mp2, oXbp, oDlg, GetList )

IF Empty(oXbp)
  RETURN DCGUI_NONE
ENDIF

IF oXbp:isDerivedFrom('XbpPushButton')
  IF nEvent == xbeM_LbClick
    DC_ClearEvents()
    RETURN DCGUI_IGNORE
  ELSEIF nEvent == xbeM_LbDblClick
    PostAppEvent(xbeP_Activate,,,oXbp)
    RETURN DCGUI_IGNORE
  ENDIF
ENDIF

RETURN DCGUI_NONE

Re: DCPUSHBUTTONXP work using Double Click?

Posted: Tue Apr 17, 2018 10:30 am
by digitsoft
Thanks Roger
and as I tell you that of 5 button that I have only one be using with double click


rdonnay wrote:Here is a simple way to do it in a custom event handler:

Code: Select all

#INCLUDE "dcdialog.CH"
#INCLUDE "appevent.CH"

FUNCTION Main()

LOCAL GetList[0], oButton

@ 0,0 DCPUSHBUTTONXP caption 'Testing' SIZE 20,2 ;
      ACTION {||(wtf 'activated')}

DCREAD GUI FIT HANDLER ButtonHandler

RETURN nil

* ----------

PROC appsys ; RETURN

* ----------

STATIC FUNCTION ButtonHandler( nEvent, mp1, mp2, oXbp, oDlg, GetList )

IF Empty(oXbp)
  RETURN DCGUI_NONE
ENDIF

IF oXbp:isDerivedFrom('XbpPushButton')
  IF nEvent == xbeM_LbClick
    DC_ClearEvents()
    RETURN DCGUI_IGNORE
  ELSEIF nEvent == xbeM_LbDblClick
    PostAppEvent(xbeP_Activate,,,oXbp)
    RETURN DCGUI_IGNORE
  ENDIF
ENDIF

RETURN DCGUI_NONE

Re: DCPUSHBUTTONXP work using Double Click?

Posted: Tue Apr 17, 2018 10:54 am
by rdonnay
Here is a better solution:

Code: Select all

#INCLUDE "dcdialog.CH"
#INCLUDE "appevent.CH"

FUNCTION Main()

LOCAL GetList[0], oButton

@ 0,0 DCPUSHBUTTONXP caption 'Testing 1' SIZE 20,2 ;
      action {||(wtf 'activated 1')} ;
      EVAL {|o|o:lbClick := {||DC_ClearEvents()}, ;
               o:lbDblClick := {|a,b,o|PostAppEvent(xbeP_Activate,,,o)}}

DCREAD GUI FIT 

RETURN nil

* ----------

PROC appsys ; RETURN

Re: DCPUSHBUTTONXP work using Double Click?

Posted: Tue Apr 17, 2018 12:00 pm
by digitsoft
Thanks Roger

rdonnay wrote:Here is a better solution:

Code: Select all

#INCLUDE "dcdialog.CH"
#INCLUDE "appevent.CH"

FUNCTION Main()

LOCAL GetList[0], oButton

@ 0,0 DCPUSHBUTTONXP caption 'Testing 1' SIZE 20,2 ;
      action {||(wtf 'activated 1')} ;
      EVAL {|o|o:lbClick := {||DC_ClearEvents()}, ;
               o:lbDblClick := {|a,b,o|PostAppEvent(xbeP_Activate,,,o)}}

DCREAD GUI FIT 

RETURN nil

* ----------

PROC appsys ; RETURN