Here is a new one
A double left click trap for a browse.
Enjoy
* General Usage
* Can be used with BrowKey to have both the ENTER key and
* a double left click select a record
PUSH KEY CLEAR
DO BrowClk WITH "ARM"
DO BrowKey WITH "ARM"
BROWSE NOAPPEND NODELETE NOMODIFY ;
TITLE "Enter or Dbl Click to select Esc to abort"
DO BrowClk WITH "QUIT" && disarm OKL if ESC is pressed
DO BrowKey WITH "QUIT" && disarm OKL if ESC is pressed
POP KEY
IF glSelect
? "Record # " + ALLTRIM(STR(RECNO())) + " was selected"
* record selection code
ELSE
? "Escape pressed, no record was selected!"
* no record selected code
ENDIF
RELEASE glSelect
*********************************************************************
* Procedure...: BrowClk
* Platform....: Windows
* Version.....: 1.00
* Author......: John Thornton
* Project.....: HVAC
* Created.....: December 1, 1996
* Copyright...: JET Labs Inc.
*)Description.: Allows a selection to be made in a Browse Window
*)............: with a Double Left Click
* Called by...: Any
* Parameters..: lcDblClick
* Returns.....: Nothing
* Syntax......: DO BrowClk WITH "ARM" && To arm the OKL LEFTMOUSE
* ............: BROWSE FIELDS ... NOAPPEND NODELETE NOMODIFY;
* ............: WINDOW
* ............: DO BrowClk WITH "QUIT" && To clear OKL if ESC is pressed
* Example.....:
* Notes.......: If glSelect is .t. a selection was made
* ............: RELEASE glSelect when finished
* ............: Can be used together with BrowKey
* ............: Issues a KEYBOARD '{CTRL+W}' PLAIN to close the Browse
* ............: Window when a selection is made with Double Left Click
*********************************************************************
PROCEDURE BrowClk
PARAMETERS luClkAct
PRIVATE ALL LIKE l*
* If we are not in the browse Bitch
IF MWINDOW() WONTOP()
? CHR(7)
* This wait keeps us in the browse window
WAIT WINDOW "" TIMEOUT .0001
RETURN
ENDIF
IF TYPE ("glSelect") = "U" && If glSelect is not there make it so
PUBLIC glSelect
ENDIF
IF TYPE ("gnClkTime") = "U" && If gnClkTime is not there make it so
PUBLIC gnClkTime
gnClkTime = 0
ENDIF
IF TYPE ("luClkAct") = "L"
* If the LEFT MOUSE button is pressed ie. no parameter is passed
* do Click handler to check to see if it is a double click
IF SECONDS() < gnClkTime
=INKEY(0,'HM')
* glSelect=.T. so the calling program knows a selection was made
glSelect = .T. && check glSelect to see if a choice was made
* If a Double Left Click clear the OKL LEFTMOUSE
ON KEY LABEL LEFTMOUSE
* Stuff to do if it is a double click
KEYBOARD '{CTRL+W}' PLAIN
ELSE
gnClkTime = SECONDS() + _DBLCLICK
ENDIF
ELSE
IF luClkAct = "ARM" && If "ARM" was passed we are starting up
ON KEY LABEL LEFTMOUSE DO BrowClick && Arm the OKL LEFTMOUSE
glSelect = .F.
ENDIF
ENDIF
RETURN
*End of Procedure BrowClick
*********************************************************************
þ CMPQwk 1.42 196 þWhy is "abbreviation" such a long word?
--- FidoPCB v1.5 beta-'g'
---------------
* Origin: La. Medsig - A Medical BBS since 1983 - Harahan, La (1:396/28)
|