home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / tkmengen.zip / DESIGN.CLA < prev    next >
Text File  |  1990-03-23  |  7KB  |  186 lines

  1.          MEMBER('MAKEMENU')
  2.  
  3. !=================================================== A TABLE Procedure =====
  4. DESIGN        PROCEDURE
  5.  
  6.                   !====== SCREEN for Procedure main =====
  7. SCREEN         SCREEN      WINDOW(20,80),AT(4,1),PRE(SCR),HUE(7,4,0)
  8.            ROW(8,3)      PAINT(10,76),HUE(8,7)
  9.            ROW(1,1)      STRING('╔═{78}╗'),ENH
  10.            ROW(2,1)      REPEAT(3);STRING('║<0{78}>║'),ENH .
  11.            ROW(5,1)      REPEAT(2),EVERY(2);STRING('╟─{78}╢'),ENH .
  12.            ROW(6,1)      REPEAT(2),EVERY(13);STRING('║<0{78}>║'),ENH .
  13.            ROW(8,1)      REPEAT(10);STRING('║<0{78}>║'),ENH .
  14.            ROW(18,1)  STRING('╟─{78}╢'),ENH
  15.            ROW(20,1)  STRING('╚═{78}╝'),ENH
  16.            ROW(2,4)      STRING('Name of Data File :'),HUE(14,4)
  17.          COL(43)  STRING('Setup File Name'),HUE(14,4)
  18.            ROW(3,38)  STRING('    '),HUE(14,4)
  19.          COL(43)  STRING('Screen'),HUE(14,4)
  20.            ROW(4,4)      STRING('Member of Program'),HUE(14,4)
  21.            ROW(6,4)      STRING('MENU ITEM {24}MENU DESCRIPTION'),ENH
  22.            ROW(19,3)  STRING(' INS '),HUE(4,7)
  23.          COL(9)      STRING('Insert'),ENH
  24.          COL(20)  STRING(' DEL '),HUE(4,7)
  25.          COL(26)  STRING('Delete'),ENH
  26.          COL(36)  STRING(' RETURN '),HUE(4,7)
  27.          COL(45)  STRING('Change'),ENH
  28.          COL(55)  STRING(' ESC '),HUE(4,7)
  29.          COL(61)  STRING('or'),ENH
  30.          COL(64)  STRING(' CTRL-ESC '),HUE(4,7)
  31.          COL(75)  STRING('Exit'),ENH
  32.          COL(79)  ENTRY,USE(?FIRST_FIELD)
  33.            ROW(2,25)  STRING('  '),HUE(14,4)
  34.          COL(27)  ENTRY(@S8),USE(MEM:S8DFNAME),HUE(11,4),SEL(0,7),REQ,UPR
  35.            ROW(3,4)      STRING('Name of Menu Procedure:'),HUE(14,4)
  36.          COL(27)  ENTRY(@S8),USE(MEM:S12DFNAME),HUE(11,4),SEL(0,7),REQ
  37.            ROW(4,22)  STRING(':'),HUE(14,4)
  38.          COL(27)  ENTRY(@S8),USE(MEM:PROGNAME),HUE(11,4),SEL(0,7),REQ,NUM,UPR
  39.            ROW(2,59)  STRING(':'),HUE(14,4)
  40.          COL(63)  ENTRY(@S8),USE(MEM:SET_UP),HUE(11,4),SEL(0,7),REQ,UPR
  41.            ROW(3,50)  STRING('File Name:'),HUE(14,4)
  42.          COL(63)  ENTRY(@S8),USE(MEM:SCRNAME),HUE(11,4),SEL(0,7),REQ,UPR
  43.            ROW(4,43)  STRING('Idle Procedure Name:'),HUE(14,4)
  44.          COL(63)  ENTRY(@S12),USE(MEM:IDLENAME),HUE(11,4),SEL(0,7),UPR
  45.               REPEAT(10),INDEX(NDX)
  46.            ROW(8,4)        POINT(1,74),USE(?POINT),ESC(?-1),SEL(15,0)
  47. MAINMENU     COL(4)        STRING(10),HUE(0,3)
  48. MDESC         COL(18)    STRING(60),HUE(0,3)
  49.          .          .
  50.  
  51.  
  52. FLD           BYTE(?POINT)             ! field number of ?POINT
  53. PTR           LONG                 ! pointer to top record
  54. NEW_PTR           LONG                 ! pointer to inserted record
  55. NDX           BYTE                 ! repeat structure index
  56. FIRST_NDX      BYTE                 ! first row to be displayed
  57. LAST_NDX       BYTE                 ! last row to be displayed
  58. ROWS           BYTE(09)                 ! number of rows to scroll
  59. COLS           BYTE(78)                 ! number of columns to scroll
  60. RECS           LONG                 ! records in file
  61. KEY         SHORT                 !last key pressed
  62. isEditRange  SHORT
  63. isFldNum     SHORT
  64.  
  65.  
  66.   CODE                         !begin executable statements
  67.   OPEN(SCREEN)                       !open the employee screen
  68.   setcursor
  69.   PTR        = 1                     !pointer to top record
  70.   NEW_PTR   = 0                     !pointer to inserted record
  71.   NDX        = 1                     !repeat structure  index
  72.   FIRST_NDX = 1                     !first row to be displayed
  73.   !  SELECT(?POINT)                    !select point field
  74.   LOOP                         !loop
  75.     ALERT()                     ! clear all alerted keys
  76.     ALERT(Ins_key)
  77.     ALERT(DEL_KEY)
  78.     ALERT(ESC_KEY)
  79.     ALERT(ENTER_KEY)
  80.     ALERT(CTRL_ESC)
  81.     ACCEPT                     ! get the point field
  82.     isEDitRange=Field()
  83.     KEY = KEYCODE()                   ! set key code
  84.     IF KEY = ENTER_KEY AND |                  ! █ ┌─ On screen accept key
  85.        isEditRange <> ?POINT                     ! █ │    And not on the point field
  86.       UPDATE                             ! █ │     Move all fields from screen
  87.       isEditRange = ?POINT - 1                     ! █ │     And edit remaining fields
  88.       SELECT(?POINT)                         ! █ │     If ok then start here next
  89.     END                                 ! █ └─ End if KeyCode =
  90.       IF KEY = ESC_KEY OR KEY = CTRL_ESC        ! return on F9 or F10
  91.         RETURN                       ! return
  92.       .                           ! end if
  93.     IF ~RECS THEN KEY = INS_KEY.          ! add record to empty file
  94.     LOOP isFldNum = FIELD() TO isEditRange
  95.       CASE isFldNum
  96.     OF ?FIRST_FIELD
  97.       IF KEY = ESC_KEY OR KEY = CTRL_ESC        ! return on F9 or F10
  98.         RETURN                       ! return
  99.       .                           ! end if
  100.     OF ?mem:s8dfname
  101.       IF mem:s8dfname = ''                       ! ┌─ If required field is empty
  102.         BEEP                           ! │     Sound keyboard alarm
  103.         SELECT(?mem:s8dfname)                   ! │     And stay on this field
  104.         BREAK                           ! │
  105.       END                               ! └─ End
  106.       OPEN(menu)                             ! Open the file
  107.       IF ERRORCODE() = 2                         ! ┌─ If not found,
  108.         CREATE(menu)                         ! │   then create
  109.       END                                 ! └─ Endif
  110.       SET(MEN:MENU)
  111.       RECS = RECORDS(MENU)
  112.       DO FILL_SCROLL                 !fill scroll area of screen
  113.  
  114.        OF ?mem:s12DFName
  115.      IF mem:s12DFName= ''                      ! ┌─ If required field is empty
  116.        BEEP                              ! │    Sound keyboard alarm
  117.        SELECT(?mem:s12DFName)                  ! │    And stay on this field
  118.        BREAK                          ! │
  119.      END                              ! └─ End
  120.        OF ?mem:PROGNAME
  121.      IF mem:PROGNAME = ''                      ! ┌─ If required field is empty
  122.        BEEP                              ! │    Sound keyboard alarm
  123.        SELECT(?mem:PROGNAME)                  ! │    And stay on this field
  124.        BREAK                          ! │
  125.      END                              ! └─ End
  126.        OF ?mem:SET_UP
  127.      IF mem:SET_UP = ''                      ! ┌─ If required field is empty
  128.        BEEP                              ! │    Sound keyboard alarm
  129.        SELECT(?mem:SET_UP)                      ! │    And stay on this field
  130.        BREAK                          ! │
  131.      END                              ! └─ End
  132.        OF ?mem:SCRnAME
  133.      IF mem:SCRNAME= ''                      ! ┌─ If required field is empty
  134.        BEEP                              ! │    Sound keyboard alarm
  135.        SELECT(?mem:SCRNAME)                      ! │    And stay on this field
  136.        BREAK                          ! │
  137.      END                              ! └─ End
  138.        OF ?mem:IDLENAME
  139.      IF mem:IDLENAME= ''                      ! ┌─ If required field is empty
  140.        BEEP                              ! │    Sound keyboard alarm
  141.        SELECT(?mem:IDLENAME)                  ! │    And stay on this field
  142.        BREAK                          ! │
  143.      END                              ! └─ End
  144.  
  145.       OF ?POINT
  146.     CASE KEY                     ! what key was pressed?
  147.       OF INS_KEY                    !ADD A RECORD TO FILE
  148.         CLEAR(MEN:RECORD)                   ! clear the record
  149.         ISaction=1
  150.         form
  151.         NEW_PTR = POINTER(MENU)           ! new pointer to added dept
  152.  
  153.       OF ENTER_KEY                       !CHANGE A RECORD IN FILE
  154.         GET(MEN:MENU,PTR+NDX-1)            ! get the record
  155.         ISACTION = 2
  156.         FORM
  157.       OF DEL_KEY                    !DELETE A FILE RECORD
  158.         GET(MEN:MENU,PTR+NDX-1)            ! get the record
  159.         ISACTION=3
  160.         FORM
  161.        .
  162.        IF KEY=ESC_KEY OR KEY=CTRL_ESC OR KEYCODE()=F9_KEY THEN RETURN. !NO CHANGES
  163.        RECS = RECORDS(MENU)            !refresh record count
  164.        DO FILL_SCROLL                    !fill scroll area of screen
  165.     . . .                          !end loop
  166.  
  167.  
  168. FILL_SCROLL   ROUTINE                 !ROUTINE STATEMENT
  169.   IF ROWS > RECS                 !IF MORE ROWS THAN RECORDS
  170.     LAST_NDX = RECS                 ! set last index to recs
  171.   ELSE                         !OTHERWISE
  172.     LAST_NDX = ROWS                 ! set last index to rows
  173.   .
  174.   BLANK(11,3,10,75)
  175.   IF FIRST_NDX <= LAST_NDX             !if records are to be displayed
  176.     SAVE_NDX# = NDX                 ! save repeat index
  177.     SET(MEN:MENU,PTR+FIRST_NDX-1)          ! set to 1st dept. on screen
  178.     LOOP NDX = FIRST_NDX TO LAST_NDX         ! loop thru the screen
  179.       NEXT(MENU)                ! read next department record
  180.       SCR:MAINMENU = MEN:MAINMENU           ! display the department name
  181.       SCR:MDESC = MEN:MDESC               ! display the department name
  182.     .                         !end loop
  183.     NDX = SAVE_NDX#                 !reset the repeat index
  184.   .                         !end if
  185.  
  186.