home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a067 / 1.img / GRUMP501.EXE / GKPASS.PRG < prev    next >
Encoding:
Text File  |  1991-05-16  |  1.4 KB  |  58 lines

  1. /*
  2.     Function: GKeyPass()
  3.     Purpose:  Alternate for GetApplyKey()
  4.               for password entry
  5.     Author:   Greg Lief
  6.     Copyright (c) 1991 Greg Lief
  7.     Dialect:  Clipper 5.01
  8. */
  9.  
  10. #define  PASSWORD       cargo[2, 1]
  11. #define  PASSWIDTH      cargo[2, 2]
  12. #define  PASSCHAR       substr(get:picture, 3)
  13.  
  14. #include "inkey.ch"
  15. #include "getexit.ch"
  16.  
  17. procedure gkeypass(get, key)
  18. local cKey
  19. local oldvalue
  20.  
  21. //───── check for SET KEY and basic movement keys
  22. if ! GKeyBasic(get, key)
  23.  
  24.    do case
  25.  
  26.       case (key == K_INS)
  27.          Set( _SET_INSERT, ! Set(_SET_INSERT) )
  28.          setcursor( if(set(_SET_INSERT), 3, 1) )
  29.  
  30.       case (key == K_CTRL_U)
  31.          get:Undo()
  32.  
  33.       case (key == K_BS)
  34.          get:BackSpace()
  35.          get:PASSWORD := substr(get:PASSWORD, 1, len(get:PASSWORD) - 1)
  36.  
  37.       otherwise
  38.  
  39.          if (key >= 32 .and. key <= 255)
  40.             cKey := chr(key)
  41.             //───── we keep the real string in the cargo hold and display asterisks
  42.             get:PASSWORD += ckey
  43.             if ( Set(_SET_INSERT) )
  44.                get:Insert(PASSCHAR)
  45.             else
  46.                get:Overstrike(PASSCHAR)
  47.             endif
  48.             if (get:typeOut .and. !Set(_SET_CONFIRM) )
  49.                if ( Set(_SET_BELL) )
  50.                   ?? Chr(7)
  51.                endif
  52.                get:exitState := GE_ENTER
  53.             endif
  54.          endif
  55.    endcase
  56. endif
  57. return
  58.