INKEY()函数妙用一例

Author: 安徽 宁 青 Date: 1994-01-07

        一、XSSJ.PRG程序清单
        CLEAR
        STORE" "TO Y,N,R,D,F,M
        DATE=DTOC(DATE())
        N=SUBSTR(DATE,7,2)
        Y=IIF(SUBSTR(DATE,1,1)="0","0"+SUBSTR(DATE,2,1),SUBSTR(DATE,1,2))
        R=IIF(SUBSTR(DATE,4,1)="0","0"+SUBSTR(DATE,5,1),SUBSTR(DATE,4,2))
        SHIJIAN="19"+N+"年"+Y+"月"+R+"日"
        @20,10 SAY SHIJIAN
        SHU="日一二三四五六"
        YE=STR(DOW(DATE()))
        Q=VAL(YE)*2-1
        W=SUBS(SHU,Q,2)
        XQX="星期"+W
        @20,36 SAY XQX
        TIME=TIME()
        D=IIF(SUBSTR(TIME,1,1)="0","0"+SUBSTR(TIME,2,1),SUBSTR(TIME,1,2))
        F=IIF(SUBSTR(TIME,4,1)="0","0"+SUBSTR(TIME,5,1),SUBSTR(TIME,4,2))
        M=IIF(SUBSTR(TIME,7,1)="0","0"+SUBSTR(TIME,8,1),SUBSTR(TIME,7,2))
        DFM=D+"点"+F+"分"+M+"秒"
        @20,58 say dfm
        RETURN
        二、XSSJ.PRG程序的调用
        笔者在编制固定资产管理系统时,在菜单选择时调用了这个小程序,于是在屏幕的第20行将持续显示日期、星期和时间,在静止的菜单屏幕上给人以动感。现举一例如下:
        DO WHILE .T.
        CLEAR
        SET COLOR TO W/R,W/B
        @ 3,15 SAY" "
        @ 4,15 SAY"  合 肥 铝 厂 "
        @ 5,15 SAY" "
        @ 6,15 SAY"  固定资产管理系统 "
        @ 7,15 SAY" "
        @ 8,15 SAY" 1.数据输入  2.数据查询 "
        @ 9,15 SAY" "
        @10,15 SAY" 3.数据修改  4.报表打印 "
        @11,15 SAY" "
        @12,15 SAY"  O.退出 "
        @13,15 SAY" "
        @14,15 SAY" 你的工作选择:---------------- "
        @15,15 SAY" "
        SET COLOR TO G/,W/B
        I=O
        @ O,O SAY CHR(14)+"RO]"
        DO WHILE I<48.OR.I>52
        DO XSSJ
        I=INKEY(1)
        ENDDO
        @ O,O SAY CHR(14)+"R1]"
        I=VAL(CHR(I))
        Y="EXIT DO GDSR DO GDCX DO GDXG DO GDDY"
        P=SUBSTR(Y,I*8+1,8)
        &P
        ENDDO
        RETURN
        该程序安排了一个循环,它等待用户按一个键,变量I是一个计数器,它的值是数值型的,如果不按键,则将不断地将I赋值为0,同时显示时间,当用户键入选择时,它对INKEY()函数发生作用,于是I的值就不再为0了,显示程序XSSJ.PRG退出循环,然后,程序检测用户的输入,如果输入的是数字0到4,则根据不同的选择,分情况处理。否则返回DO WHILE重新执行循环,重新键入正确的选择。