📄 menu.zrg
字号:
define database A
menuname :c,16
enddef
define var
gMenu :c,16[8]
mMenu :c,16[4]
addMenu :c,100[4]
dbfMenu :c,16[50]
****************存贮菜单内容的数组变量*******************
MenuChoice :n,3
BarTitle :c,20
SzTitle :c,20
Choice :n,1
result :n,1
z :n,3
****************一些临时变量****************************
x :n,3
y :n,3
r :n,3
side :n,3
side1 :n,3
****************绘制方形和圆形所用变量*******************
i :n,3
j :n,3
k :n,3
l :n,3
m :n,3
n1 :n,3
****************绘制振中铭牌所用变量*********************
enddef
****************hide子程序用于隐藏光标*******************
procedure hide
set mode to 0
@7,20
set mode to 1
return
endpro
***************drawpic子程序用于绘制振中公司的铭牌********
procedure drawpic
line i,j,i+k,j
line i+l*0.2,j+l*0.2,i+k,j+l*0.2
line i+l*0.4,j+l*0.4,i+k,j+l*0.4
line i+l*0.6,j+l*0.6,i+k,j+l*0.6
line i+k+l*0.2,j,i+k+l*0.2+l,j
line i+k+l*0.4,j+l*0.2,i+k+l*0.4+l,j+l*0.2
line i+k+l*0.6,j+l*0.4,i+k+l*0.6+l,j+l*0.4
line i+k+l*0.8,j+l*0.6,i+k+l*0.8+l,j+l*0.6
line i+k+l*0.2,j,i+k+l*0.2,j+m
line i+k+l*0.4,j+l*0.2,i+k+l*0.4,j+m-l*0.2
line i+k+l*0.6,j+l*0.4,i+k+l*0.6,j+m-l*0.4
line i+k+l*0.8,j+l*0.6,i+k+l*0.8,j+m-l*0.6
line i+k+l*0.2+l,j,i+k+l*0.2+l,j-n1
line i+k+l*0.4+l,j+l*0.2,i+k+l*0.4+l,j-n1+l*0.2
line i+k+l*0.6+l,j+l*0.4,i+k+l*0.6+l,j-n1+l*0.4
line i+k+l*0.8+l,j+l*0.6,i+k+l*0.8+l,j-n1+l*0.6
return
endpro
start
do while .t.
clear
MenuChoice=0
@0,6 say "演示内容"
@1,0 say "===================="
@8,0 say "===================="
@9,3 say "20"+left(date(),2)+"年"+substr(date(),4,2)+"月"+substr(date(),7,2)+"日"
mMenu[1]="[1] 绘制图形"
mMenu[2]="[2] 系统信息"
mMenu[3]="[3] 电池状态"
mMenu[4]="[4] 动态菜单"
addMenu[1]="可以根据输入的数据绘制各种图形。"
addMenu[2]="可以得到系统的一些信息,从而可以更好的对抄表器进行管理。"
addMenu[3]="可以提示电池状态,包括电池电压低、正常、充足,电压低时请马上充电。"
addMenu[4]="该菜单为从数据库中的某字段中取得,为动态生成。"
@3,4 menu mMenu,4,4
@2,0 menu addMenu,4
READ MENU TO MenuChoice
do case
case MenuChoice=1
do while .t.
clear
Choice=0
line 0,11,159,10
line 0,13,159,12
line 0,35,159,35
line 0,37,159,37
line 0,149,159,149
line 0,147,159,147
line 0,125,159,125
line 0,123,159,123
set intensity on
@1,0 say space(6)
@8,0 say space(6)
set intensity off
@1,6 say "绘制图形"
@8,6 say "振中公司"
set intensity on
@1,14 say space(6)
@8,14 say space(6)
set intensity off
@3,5 prompt "○ 圆 形"
@4,5 prompt "□ 正方形"
@5,5 prompt "□ 长方形"
@6,5 prompt "△ 铭 牌"
Menu to Choice
do case
case Choice=1
clear 6
@7,0 say "圆心坐标x:"get x
@8,0 say "圆心坐标y:"get y
@9,0 say "半径:"get r
read
if lastkey()=24
loop
endif
clear
circle x,y,r
do hide
wait ""
case Choice=2
clear 6
@7,0 say "顶角坐标x:"get x
@8,0 say "顶角坐标y:"get y
@9,0 say "边长:"get side
read
if lastkey()=24
loop
endif
clear
line x,y,(x+side),y
line (x+side),y,(x+side),(y+side)
line (x+side),(y+side),x,(y+side)
line x,(y+side),x,y
do hide
wait ""
case Choice=3
clear 6
@6,0 say "顶角坐标x:"get x
@7,0 say "顶角坐标y:"get y
@8,0 say "横向边长:"get side
@9,0 say "纵向边长:"get side1
read
if lastkey()=24
loop
endif
clear
line x,y,(x+side),y
line (x+side),y,(x+side),(y+side1)
line (x+side),(y+side1),x,(Y+side1)
line x,(y+side1),x,y
do hide
wait ""
case Choice=4
clear
i=0
z=1
do while z<=6
if z=1
i=1
else
i=i+27
endif
j=145
k=10
l=6
m=15
n1=10
z=z+1
do drawpic
enddo
@0,0 say "请输入各项值"
@2,0 say "起点x:"get i
@3,0 say "起点y:"get j &&起点的坐标
@4,0 say "长度1:"get k &&左边图形的线长
@5,0 say "长度2:"get l &&右边图形的线长
@6,0 say "长度3:"get m &&下面的线长
@7,0 say "长度4:"get n1 &&上面图形的线长
read
if lastkey()=24
loop
endif
clear
do drawpic
do hide
wait ""
otherwise
exit
endcase
enddo
case MenuChoice=2
do while .t.
clear
Choice=0
gMenu[1]="① 机器型号"
gMenu[2]="② 出厂日期"
gMenu[3]="③ 机器序号"
gMenu[4]="④ 软件版本"
gMenu[5]="⑤ 硬件版本"
gMenu[6]="⑥ FLASH容量"
gMenu[7]="⑦ RAM容量"
gMenu[8]="⑧ 返回菜单"
@0,0 say "********************"
@9,0 say "********************"
@1,4 menu gMenu,8,8
READ MENU TO Choice
do case
case Choice=1
BarTitle="机器型号"
SzTitle =GETSYSINFO(1)
result=messagebox(SzTitle,0,BarTitle)
case Choice=2
BarTitle="出厂日期"
SzTitle =GETSYSINFO(2)
result=messagebox(SzTitle,0,BarTitle)
case Choice=3
BarTitle="机器序号"
SzTitle =GETSYSINFO(3)
result=messagebox(SzTitle,0,BarTitle)
case Choice=4
BarTitle="软件版本"
SzTitle =GETSYSINFO(4)
result=messagebox(SzTitle,0,BarTitle)
case Choice=5
BarTitle="硬件版本"
SzTitle =GETSYSINFO(5)
result=messagebox(SzTitle,0,BarTitle)
case Choice=6
BarTitle="FLASH容量"
SzTitle =GETSYSINFO(6)
result=messagebox(SzTitle,0,BarTitle)
case Choice=7
BarTitle="RAM容量"
SzTitle =GETSYSINFO(7)
result=messagebox(SzTitle,0,BarTitle)
case Choice=8
exit
otherwise
exit
endcase
enddo
case MenuChoice=3
if GETBATTERY()=1
sztitle="电池电量偏低,需要充电"
endif
if GETBATTERY()=2
sztitle="电压正常"
endif
if GETBATTERY()=3
sztitle="电压正常,电力充足"
endif
result=messagebox(sztitle,0,"电池电压提示")
case MenuChoice=4
i=1
do while i<=reccount()
go i
dbfMenu[i]=trim(menuname)
i=i+1
enddo
clear
@0,0 say "******动态菜单******"
@9,0 say "*******************"
if reccount()>6
@2,7 menu dbfMenu,reccount(),6
read menu to Choice
else
@2,7 menu dbfMenu,reccount(),reccount()
read menu to Choice
endif
otherwise
exit
endcase
enddo
endstart
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -