home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a042 / 2.ddi / DEMO / GENERIC.PRG < prev    next >
Encoding:
Text File  |  1991-01-22  |  4.9 KB  |  211 lines

  1. *Program is generic.prg
  2. *Author Clyde Dever
  3. *
  4. *
  5. SET PROCEDURE TO generic
  6. PUBLIC begread, mode
  7. STORE 1 TO begread
  8. USE tname INDEX tname, tssn
  9. IF 'MSDOS' $ OS()
  10.    SET SAY VIDEO TO 127
  11.    @ 1,22 SAY 'Customer Entry and Modification'
  12.    SET COLOR TO
  13. ELSE
  14.    @ 1,15 SAY 'Customer Entry and Modification'
  15. ENDIF
  16. @ 4,6 SAY 'Name'
  17. @ 4,43 SAY 'Account Number'
  18. @ 8,6 SAY 'Address'
  19. @ 10,6 SAY 'City'
  20. @ 12,6 SAY 'State'
  21. @ 12,29 SAY 'Zip Code'
  22. @ 14,6 SAY 'Business Phone'
  23. @ 16,6 SAY 'Home Phone'
  24. @ 8,49 SAY 'Last Contact'
  25. @ 16,49 SAY 'Notes'
  26. @ 23,60 say 'Escape to exit'
  27. @ 7,4 TO 17,73
  28. SET EXIT VIDEO TO 112
  29. IF 'MSDOS' $ OS()
  30.    SET BOX ON    | Create Buttons with boxes around them
  31. ENDIF
  32. CREATE BUTTON ' Next ' AT 19,3
  33. CREATE BUTTON ' Prev ' AT 19, 16
  34. CREATE BUTTON 'Delete' AT 19,29
  35. CREATE BUTTON ' New  ' AT 19,42
  36. CREATE BUTTON 'Cancel' AT 19,55
  37. CREATE BUTTON ' Edit ' AT 19,68
  38. mode = 'E'
  39. DO dispinfo
  40. DO WHILE .T.
  41.    ENABLE BUTTON ' Next '
  42.    ENABLE BUTTON ' Prev '
  43.    ENABLE BUTTON 'Delete'
  44.    ENABLE BUTTON ' New  '
  45.    ENABLE BUTTON 'Cancel'
  46.    ENABLE BUTTON ' Edit '
  47.    STORE name TO mname
  48.    STORE ssn TO mssn
  49.    @ 4,11 GET mname VALID chkname(mname) CHANGE MESSAGE ;
  50.            'Enter the name to find'  ERROR 'Name not Found'
  51.    @ 4,58 GET mssn VALID chkssn(mssn) CHANGE MESSAGE ;
  52.          'Enter the Account number to find' ;
  53.          ERROR 'The account number does not exist'
  54.    READ START WITH begread
  55.    action = CHECKEVENT()
  56.    IF .NOT. doevent(action,.F.)
  57.       IF action = 'X'
  58.          EXIT
  59.       ENDIF
  60.       LOOP
  61.    ENDIF
  62.    DO WHILE .T.
  63.       IF action = 'W'
  64.          mode = 'N'
  65.          APPEND BLANK
  66.          @ 4,11 GET name
  67.          @ 4,58 GET ssn
  68.          DISABLE BUTTON ' Next '
  69.          DISABLE BUTTON ' Prev '
  70.          DISABLE BUTTON 'Delete'
  71.          DISABLE BUTTON ' New  '
  72.          DISABLE BUTTON ' Edit '
  73.       ELSE
  74.          DISABLE BUTTON ' Edit '
  75.          DISABLE BUTTON ' New  '
  76.          @ 4,11 SAY name
  77.          @ 4,58 SAY ssn
  78.          mode = 'E'
  79.       ENDIF
  80.       @ 8,14 GET address
  81.       @ 10,14 GET city
  82.       @ 12,14 GET state
  83.       @ 12,38 GET zip
  84.       @ 14,21 GET busphone PICTURE '(###)###-####'
  85.       @ 16,21 GET homephone PICTURE '(###)###-####'
  86.       @ 8,62 GET date MESSAGE 'Enter the date last contacted'
  87.       @ 12,50 GET active CHECKBOX 'Active'
  88.       @ 16,55 GET notes MESSAGE 'Press Cntl + PgDn to Edit Notes'
  89.       READ
  90.       action = CHECKEVENT()
  91.       IF doevent(action,.T.)
  92.          EXIT
  93.       ENDIF
  94.    ENDDO
  95. ENDDO
  96. RELEASE begread, mode
  97. CLOSE ALL
  98. RETURN
  99.  
  100.  
  101. FUNCTION chkname
  102.    PARAMETER target
  103.    SET INDEX TO tname
  104.    SEEK TRIM(target)
  105.    begread = 1  | As a convenience, Change default get field
  106.    IF .NOT. EOF()
  107.       GETNO(30)    | Anything larger than number of get fields exist read
  108.    ELSE
  109.       GO BOTTOM
  110.       RETURN(.F.)
  111.    ENDIF
  112. RETURN(.T.)
  113.  
  114. FUNCTION chkssn
  115.    PARAMETER target
  116.    SET INDEX TO tssn
  117.    SEEK TRIM(target)
  118.    begread = 2  | As a convenience, Change default get field
  119.    IF .NOT. EOF()
  120.       GETNO(30)    | Anything larger than number of get fields exist read
  121.    ELSE
  122.       GO BOTTOM
  123.       RETURN(.F.)
  124.    ENDIF
  125. RETURN(.T.)
  126.  
  127. FUNCTION checkevent
  128.    ev = EVENT()
  129.    IF ev = 1
  130.       key = LASTKEY()
  131.       DO CASE
  132.          CASE key = 27
  133.             RETURN('X')
  134.          CASE key = 530
  135.             RETURN('P')
  136.          CASE key = 536
  137.             RETURN('N')
  138.          OTHERWISE
  139.             RETURN('E')
  140.       ENDCASE
  141.    ELSE
  142.       IF ev = 6   | button event
  143.          STORE BUTTON() TO btext
  144.          DO CASE
  145.             CASE btext =  ' Next '
  146.                RETURN('N')
  147.             CASE btext =  ' Prev '
  148.                RETURN('P')
  149.             CASE btext =  'Delete'
  150.                RETURN('D')
  151.             CASE btext =  ' New  '
  152.                RETURN('W')
  153.             CASE btext =  'Cancel'
  154.                RETURN('X')
  155.             CASE btext =  ' Edit '
  156.          ENDCASE
  157.       ELSE
  158.          BEEP
  159.          RETURN('0')
  160.       ENDIF
  161.    ENDIF
  162. RETURN('E')
  163.  
  164. FUNCTION doevent
  165.    PARAMETER act, dflt
  166.    DO CASE
  167.       CASE act = 'X'
  168.          IF mode = 'E'
  169.             GOTO CURRENT
  170.          ELSE
  171.             UNPEND
  172.          ENDIF
  173.          RETURN(dflt)
  174.       CASE act = '0'  |Incorrect entry
  175.          RETURN(.F.)
  176.       CASE act = 'N'
  177.          SKIP
  178.          IF EOF()
  179.             SKIP -1
  180.          ENDIF
  181.          do dispinfo
  182.          RETURN(.f.)
  183.       CASE act = 'P'
  184.          SKIP -1
  185.          IF BOF()
  186.             SKIP
  187.          ENDIF
  188.          DO dispinfo
  189.          RETURN(.F.)
  190.       CASE act = 'D'
  191.          DELETE
  192.          SKIP
  193.          IF EOF()
  194.             SKIP -1
  195.          ENDIF
  196.          DO dispinfo
  197.          RETURN(dflt)
  198.    ENDCASE
  199. RETURN(.T.)
  200.  
  201. PROCEDURE dispinfo
  202.       @ 8,14 SAY address
  203.       @ 10,14 SAY city
  204.       @ 12,14 SAY state
  205.       @ 12,38 SAY zip PICTURE '99999'
  206.       @ 14,21 SAY busphone PICTURE '(###)###-####'
  207.       @ 16,21 SAY homephone PICTURE '(###)###-####'
  208.       @ 8,62 SAY date 
  209. RETURN
  210.  
  211.