home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
clarion
/
inclcal.zip
/
INCLCAL.CLA
< prev
next >
Wrap
Text File
|
1988-01-02
|
5KB
|
133 lines
OMIT('ENDOMIT')
This procedure is adapted from the Clarion
example program "SCHEDULE". It allows the
user to pop-up a small calendar for reference,
paging through months. Although it is not on
the user prompt, CNTL-PgUp and CNTL-PgDn will
go forward or backward one year.
To use it,
1. Change the MEMBER statement to reflect
the name of your application, and put this
CLA file in the same directory as your application.
2. Anywhere in your application, like a form
or menu, define a 'Hot Key' procedure, called
by a function key.
3. On that form or menu, give the user some
indication of the 'Hot Key' to press.
That's all you have to do.
M. D. Monk
1203 Melrose Drive
Richardson, TX 75080
(214) 680-1085
ENDOMIT
MEMBER('YOUR APPLICATION')
INCLCAL PROCEDURE
SCALENDAR SCREEN WINDOW(13,30),PRE(SCR),HUE(14,0,0)
ROW(1,1) STRING('╔═{28}╗')
ROW(2,1) REPEAT(2);STRING('║<0{28}>║') .
ROW(4,1) REPEAT(2),EVERY(7);STRING('╟─{28}╢') .
ROW(5,1) REPEAT(6);STRING('║<0{28}>║') .
ROW(12,1) STRING('║<0{28}>║')
ROW(13,1) STRING('╚═{28}╝')
ROW(3,3) STRING('S'),HUE(14,0)
COL(5) STRING(' '),HUE(14,0)
COL(7) STRING('M'),HUE(14,0)
COL(9) STRING(' '),HUE(14,0)
COL(11) STRING('TU '),HUE(14,0)
COL(15) STRING('W '),HUE(14,0)
COL(19) STRING('TH F S'),HUE(14,0)
ROW(12,2) STRING('ESC, PgUp, PgDwn'),HUE(14,0)
MYR ROW(2,4) STRING(14)
ROW(5,3) REPEAT(6,7),EVERY(1,4),INDEX(INDEX)
COL(2) POINT(1,2),USE(?INDEX),REQ
DAY COL(2) STRING(@N_2B)
. .
DATE LONG !SELECTED DATE
MONTH LONG !SELECTED MONTH
DAY LONG !SELECTED DAY
YEAR LONG !SELECTED YEAR
MONTH_NAMES GROUP !NAMES OF THE MONTHS
STRING('JANUARY FEBRUARY MARCH APRIL ')
STRING('MAY JUNE JULY AUGUST ')
STRING('SEPTEMBEROCTOBER NOVEMBER DECEMBER ')
.
MONTH_NAME STRING(9),DIM(12),OVER(MONTH_NAMES) !ARRAY OF MONTH NAMES
TRNSFORM_TBL GROUP !THIS TABLE TRANSFORMS
STRING('<01,07,13,19,25,31,37>') ! COLUMN WITHIN ROW
STRING('<02,08,14,20,26,32,38>') ! SEQUENCE
STRING('<03,09,15,21,27,33,39>') ! INTO
STRING('<04,10,16,22,28,34,40>') ! ROW WITHIN COLUMN
STRING('<05,11,17,23,29,35,41>') ! SEQUENCE
STRING('<06,12,18,24,30,36,42>') !
. !
TRANSFORM BYTE,DIM(42)OVER(TRNSFORM_TBL) !REDECLARE AS A BYTE ARRAY
INDEX BYTE !REPEAT INDEX
SAVE_INDEX BYTE !SAVE AREA FOR REPEAT INDEX
BASE_COL LONG !LAST COLUMN OF LAST MONTH
BASE_DATE LONG !LAST DAY OF LAST MONTH
I BYTE !SUBSCRIPT USED FOR DAY
CODE
ALERT(CTRL_HOME) !CTRL-HOME RESETS CALENDER
ALERT(ESC_KEY) !CTRL-ESC TERMINATES CALENDER
ALERT(CTRL_ENTER) !CTRL-ENTER ENTERS APPOINTMENTS
DATE = TODAY() !SELECT TODAY'S DATE
MONTH = MONTH(DATE) !SELECT TODAY'S MONTH
DAY = DAY(DATE) !SELECT TODAY'S DAY
YEAR = YEAR(DATE) !SELECT TODAY'S YEAR
INDEX = TRANSFORM[(DATE-DAY+1) % 7 + DAY] !SET REPEAT INDEX
LOOP !LOOP UNTIL CTRL-ESC KEY
OPEN(SCALENDAR) !SHOW THE CALENDER
SAVE_INDEX = INDEX !SAVE REPEAT INDEX
SCR:MYR = CLIP(MONTH_NAME[MONTH])&' '&YEAR!SET MONTH AND YEAR
BASE_DATE = DATE(MONTH,1,YEAR) - 1 !SET BASE DATE
BASE_COL = (BASE_DATE + 1) % 7 !SET BASE COLUMN
LOOP I = 1 TO DAY(DATE(MONTH+1,1,YEAR)-1) !LOOP FOR EACH DAY OF MONTH
INDEX = TRANSFORM[I + BASE_COL] !SET REPEAT INDEX
SCR:DAY = I !SHOW THE DAY OF THE MONTH
.
INDEX = SAVE_INDEX !RESTORE REPEAT INDEX
LOOP
ACCEPT !GET A KEY STROKE
CASE KEYCODE() !JUMP TO THE KEYSTROKE
OF ESC_KEY !RETURN ON Ctrl-Esc KEY
CLOSE(SCALENDAR)
RETURN
OF PGUP_KEY !LAST MONTH ON PgUp kEY
MONTH-=1
OF PGDN_KEY !NEXT MONTH ON PgDn KEY
MONTH+=1
OF CTRL_PGUP !LAST YEAR ON Ctrl-PgUp KEY
YEAR-=1
OF CTRL_PGDN !NEXT YEAR ON Ctrl-PgDn KEY
YEAR+=1
OF CTRL_HOME !TODAY ON Ctrl-Home KEY
DATE = TODAY() !SELECT TODAY'S DATE
MONTH = MONTH(DATE) !SELECT TODAY'S MONTH
DAY = DAY(DATE) !SELECT TODAY'S DAY
YEAR = YEAR(DATE) !SELECT TODAY'S YEAR
.
IF MONTH < 1 THEN YEAR-=1;MONTH=12. !CORRECT MONTH UNDERFLOW
IF MONTH > 12 THEN YEAR+=1;MONTH=1. !CORRECT MONTH OVERFLOW
BREAK !REDISPLAY THE CALENDER
. .