TIP: Click on subject to list as thread! ANSI
echo: foxpro
to: ALL
from: JOHN THORNTON
date: 1996-12-01 21:00:00
subject: FoxPro 2.x Lib()

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)

SOURCE: echomail via exec-pc

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.