home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / inclcal.zip / INCLCAL.CLA < prev    next >
Text File  |  1988-01-02  |  5KB  |  133 lines

  1. OMIT('ENDOMIT')
  2.  
  3.  
  4.  
  5.      This procedure is adapted from the Clarion
  6.      example program "SCHEDULE".  It allows the
  7.      user to pop-up a small calendar for reference,
  8.      paging through months.     Although it is not on
  9.      the user prompt, CNTL-PgUp and CNTL-PgDn will
  10.      go forward or backward one year.
  11.  
  12.      To use it,
  13.  
  14.      1.   Change the MEMBER statement to reflect
  15.           the name of your application, and put this
  16.           CLA file in the same directory as your application.
  17.  
  18.      2.   Anywhere in your application, like a form
  19.           or menu, define a 'Hot Key' procedure, called
  20.           by a function key.
  21.  
  22.       3.  On that form or menu, give the user some
  23.           indication of the 'Hot Key' to press.
  24.  
  25.    That's all you have to do.
  26.  
  27.       M. D. Monk
  28.       1203 Melrose Drive
  29.       Richardson, TX 75080
  30.       (214) 680-1085
  31.  
  32.  
  33. ENDOMIT
  34.  MEMBER('YOUR APPLICATION')
  35. INCLCAL         PROCEDURE
  36.  
  37. SCALENDAR    SCREEN      WINDOW(13,30),PRE(SCR),HUE(14,0,0)
  38.            ROW(1,1)      STRING('╔═{28}╗')
  39.            ROW(2,1)      REPEAT(2);STRING('║<0{28}>║') .
  40.            ROW(4,1)      REPEAT(2),EVERY(7);STRING('╟─{28}╢') .
  41.            ROW(5,1)      REPEAT(6);STRING('║<0{28}>║') .
  42.            ROW(12,1)  STRING('║<0{28}>║')
  43.            ROW(13,1)  STRING('╚═{28}╝')
  44.            ROW(3,3)      STRING('S'),HUE(14,0)
  45.          COL(5)      STRING(' '),HUE(14,0)
  46.          COL(7)      STRING('M'),HUE(14,0)
  47.          COL(9)      STRING(' '),HUE(14,0)
  48.          COL(11)  STRING('TU '),HUE(14,0)
  49.          COL(15)  STRING('W  '),HUE(14,0)
  50.          COL(19)  STRING('TH  F   S'),HUE(14,0)
  51.            ROW(12,2)  STRING('ESC, PgUp, PgDwn'),HUE(14,0)
  52. MYR           ROW(2,4)      STRING(14)
  53.            ROW(5,3)      REPEAT(6,7),EVERY(1,4),INDEX(INDEX)
  54.           COL(2)    POINT(1,2),USE(?INDEX),REQ
  55. DAY         COL(2)        STRING(@N_2B)
  56.          .          .
  57. DATE         LONG                 !SELECTED DATE
  58. MONTH         LONG                 !SELECTED MONTH
  59. DAY         LONG                 !SELECTED DAY
  60. YEAR         LONG                 !SELECTED YEAR
  61.  
  62. MONTH_NAMES  GROUP                 !NAMES OF THE MONTHS
  63.            STRING('JANUARY  FEBRUARY MARCH    APRIL    ')
  64.            STRING('MAY      JUNE     JULY     AUGUST   ')
  65.            STRING('SEPTEMBEROCTOBER  NOVEMBER DECEMBER ')
  66.          .
  67. MONTH_NAME   STRING(9),DIM(12),OVER(MONTH_NAMES) !ARRAY OF MONTH NAMES
  68.  
  69. TRNSFORM_TBL GROUP                 !THIS TABLE TRANSFORMS
  70.            STRING('<01,07,13,19,25,31,37>')     !  COLUMN WITHIN ROW
  71.            STRING('<02,08,14,20,26,32,38>')     !    SEQUENCE
  72.            STRING('<03,09,15,21,27,33,39>')     !    INTO
  73.            STRING('<04,10,16,22,28,34,40>')     !  ROW WITHIN COLUMN
  74.            STRING('<05,11,17,23,29,35,41>')     !    SEQUENCE
  75.            STRING('<06,12,18,24,30,36,42>')     !
  76.          .                     !
  77. TRANSFORM    BYTE,DIM(42)OVER(TRNSFORM_TBL)     !REDECLARE AS A BYTE ARRAY
  78.  
  79. INDEX         BYTE                 !REPEAT INDEX
  80. SAVE_INDEX   BYTE                 !SAVE AREA FOR REPEAT INDEX
  81. BASE_COL     LONG                 !LAST COLUMN OF LAST MONTH
  82. BASE_DATE    LONG                 !LAST DAY OF LAST MONTH
  83. I         BYTE                 !SUBSCRIPT USED FOR DAY
  84.  
  85.   CODE
  86.   ALERT(CTRL_HOME)                 !CTRL-HOME RESETS CALENDER
  87.   ALERT(ESC_KEY)                 !CTRL-ESC TERMINATES CALENDER
  88.   ALERT(CTRL_ENTER)                 !CTRL-ENTER ENTERS APPOINTMENTS
  89.   DATE = TODAY()                 !SELECT TODAY'S DATE
  90.   MONTH = MONTH(DATE)                 !SELECT TODAY'S MONTH
  91.   DAY = DAY(DATE)                 !SELECT TODAY'S DAY
  92.   YEAR = YEAR(DATE)                 !SELECT TODAY'S YEAR
  93.   INDEX = TRANSFORM[(DATE-DAY+1) % 7 + DAY]     !SET REPEAT INDEX
  94.  
  95.   LOOP                         !LOOP UNTIL CTRL-ESC KEY
  96.     OPEN(SCALENDAR)                 !SHOW THE CALENDER
  97.     SAVE_INDEX = INDEX                 !SAVE REPEAT INDEX
  98.     SCR:MYR = CLIP(MONTH_NAME[MONTH])&' '&YEAR!SET MONTH AND YEAR
  99.     BASE_DATE = DATE(MONTH,1,YEAR) - 1         !SET BASE DATE
  100.     BASE_COL = (BASE_DATE + 1) % 7         !SET BASE COLUMN
  101.     LOOP I = 1 TO DAY(DATE(MONTH+1,1,YEAR)-1)     !LOOP FOR EACH DAY OF MONTH
  102.       INDEX = TRANSFORM[I + BASE_COL]         !SET REPEAT INDEX
  103.       SCR:DAY = I                 !SHOW THE DAY OF THE MONTH
  104.       .
  105.     INDEX = SAVE_INDEX                 !RESTORE REPEAT INDEX
  106.  
  107.     LOOP
  108.       ACCEPT                     !GET A KEY STROKE
  109.       CASE KEYCODE()                 !JUMP TO THE KEYSTROKE
  110.  
  111.       OF ESC_KEY                 !RETURN ON Ctrl-Esc KEY
  112.     CLOSE(SCALENDAR)
  113.     RETURN
  114.       OF PGUP_KEY                 !LAST MONTH ON PgUp kEY
  115.     MONTH-=1
  116.       OF PGDN_KEY                 !NEXT MONTH ON PgDn KEY
  117.     MONTH+=1
  118.       OF CTRL_PGUP                 !LAST YEAR ON Ctrl-PgUp KEY
  119.     YEAR-=1
  120.       OF CTRL_PGDN                 !NEXT YEAR ON Ctrl-PgDn KEY
  121.     YEAR+=1
  122.       OF CTRL_HOME                 !TODAY ON Ctrl-Home KEY
  123.     DATE = TODAY()                 !SELECT TODAY'S DATE
  124.     MONTH = MONTH(DATE)             !SELECT TODAY'S MONTH
  125.     DAY = DAY(DATE)                 !SELECT TODAY'S DAY
  126.     YEAR = YEAR(DATE)             !SELECT TODAY'S YEAR
  127.       .
  128.  
  129.       IF MONTH < 1 THEN YEAR-=1;MONTH=12.     !CORRECT MONTH UNDERFLOW
  130.       IF MONTH > 12 THEN YEAR+=1;MONTH=1.     !CORRECT MONTH OVERFLOW
  131.       BREAK                     !REDISPLAY THE CALENDER
  132.   . .
  133.