FOXBASE+菜单设计技巧一例 湖 南 孟 爱 平 1993-04-09 程序第30行和47行建立了一个s1内存变量,用于存放屏幕移动字幕的内容;第50行至58行为一循环;第45行建立i内存变量,作为实现INKEY()函数循环条件。运行时,当不按任何键时,INKEY()函数不断返回ASCII码0值,使循环条件成立,从而保证循环内字幕移动和时钟显示得以实现;51至56行用于保证移动字幕和时钟每秒变换一次。当程序运行时,首先在屏幕上显示一个固定的菜单,这与我们通常设计的菜单无多大区别,菜单显示完毕,程序进入50至58行组成的循环,在未接受到任何键盘输入时,循环条件成立,并不断对系统时钟以秒为单位进行检测,目的是防止字幕移动过快,每当经过一个整秒段,利用SUBSTR()函数将变量S1的前两个字符移到该变量末尾(因一个汉字占两个ASCII码字符位置,如为西文则只需移动一个字符),并将字幕和时钟送到指定位置显示,使字幕和时钟每秒变换一次,从而实现菜单的动感。一旦按下任一键,循环条件不成立而退出循环,进入菜单选择。程序第61、62行为按回车键时用按“0”键来处理,用以退出程序。其余部分与常规程序设计类似。 附:源程序清单。(湖南 孟爱平) 7:set talk off 8:close data 9:CLEAR 10:set devi to scre 11:set scor off 12:set stat off 13:set cata off 14:bb1=chr(1)+chr(2)+chr(3)+chr(5)+chr(8)+chr(7)+chr(6)+chr(4) 15:DO WHILE.t. 16:SET COLOR TO G/,R/,N 17:clear 18:?"今天日期:"+str(year(date())-1900,2)+[年]+str(mont(date()),2)+[月]+str(day(date()),2)+[日] 19:?[]+cdow(date()) 20:?"湖南省石化厅" 21:SET COLOR TO R/,R/ 22:@4,11,6,64 BOX"&BB1." 23:SET COLOR TO+6/5 24:@5,13say[湖南省石油化工贸易公司工资管理系统] 25:SET COLOR TO G/,R/ 26:?"" 27:?"" 28:? 29:?"化工厅人教处微机室" 30:sl=[省石油化工贸易公司] 31:?"1990.4" 32:?"" 33:?""+TIME() 34:SET COLOR TO W/B 35:@row()+1,20 SAY"本系统为您提供如下服务" 36:SET COLOR TO+1 37:@row()+1,20 SAY REPL(CHR(2),36) 38:SET COLOR TO 2 39:@row()+2,8 SAY "1___人员变动2___工资调整3___工资输入4___工资计算" 40:@row()+2,8 SAY "5___打印6___查询7___文件管理0___退出系统" 41:al=[0] 42:@row()+2,10 say"请输入相应编号:" 43:set color to br*/ 44:@20,30 say[0] 45:i=0 46:ti=time() 47:sl=sl+sl+sl+sl 48:set color to gr+/G 49:@24,0 say s1 50:do while i=0 51:if time()<>ti 52:ti=time() 53:sl=subs(s1,3,78)+subs(s1,1,2) 54:@12,34 say time() 55:@24,0 say s1 56:endif 57:i=inkey() 58:enddo 59:set color to BR*/ 60:@20,30 say chr(i) 61:if i=13 62:A1=[0] 63:else 64:al=chr(i) 65:endif 66:set color to G/ 67:DO CASE 68:CASE A1="1" 69:DO RYBD 70:CASE A1="2" 71:DO GZDZ 72:CASE A1="3" 73:DO GZSR 74:CASE A1="4" 75:DO GZJS 76:CASE A1="5" 77:DO GZDY 78:CASE A1="6" 79:DO GZJX 80:CASE A1="7" 81:DO wjgl 82:CASE A1="0" 83:set scor on 84:set func7 to [doGZ;] 85:CLEAR 86:@3,18 SAY"湖南省石油化学工业厅工资管理应用软件运行结束" 87:SET COLOR TO BG/,R/,n 88:@6,35 SAY"再见!" 89:set color to g/n,w/b 90:CLOSE DATA 91:set cata TO GZ 92:set stat on 93:set talk on 94:RETURN 95:END CASE 96:@10,0 CLEAR 97:END DO