下面的示例使用 deactivate menu 使菜单失效,并从屏幕上移去它。当前的系统菜单栏用 set sysmenu save 保存到内存中,用 set sysmenu to 移去所有的系统菜单标题。define pad 创建两个菜单标题,define popup 为每个菜单标题创建一个菜单,define bar 在每个菜单上创建菜单项。当选择一个菜单标题时,on pad 使用 activate popup 激活相应的菜单,activate menu 显示并激活菜单栏。当从菜单中选择一项时,执行 choice 过程,choice 显示选中项名称和包含该项的菜单名。程序控制在 activate menu
命令后继续执行。
最后,菜单变为无效,并从屏幕上移去,然后用 release menus
extended 将它从内存中释放。
*** 请将此程序命名为 deacmenu.prg ***
clear
set sysmenu save
set sysmenu to
on key label esc keyboard chr(13)
define menu example bar at line 1
define pad convpad of example prompt '\<conversions' color scheme 3 ;
key alt+c, ''
define pad cardpad of example prompt 'card \<info' color scheme 3 ;
key alt+i, ''
on pad convpad of example activate popup conversion
on pad cardpad of example activate popup cardinfo
define popup conversion margin relative shadow color scheme 4
define bar 1 of conversion prompt 'ar\<ea' ;
key ctrl+e, '^e'
define bar 2 of conversion prompt '\<length' ;
key ctrl+l, '^l'
define bar 3 of conversion prompt 'ma\<ss' ;
key ctrl+s, '^s'
define bar 4 of conversion prompt 'spee\<d' ;
key ctrl+d, '^d'
define bar 5 of conversion prompt '\<temperature' ;
key ctrl+t, '^t'
define bar 6 of conversion prompt 't\<ime' ;
key ctrl+i, '^i'
define bar 7 of conversion prompt 'volu\<me' ;
key ctrl+m, '^m'
on selection popup conversion ;
do choice in deacmenu with prompt( ), popup( )
define popup cardinfo margin relative shadow color scheme 4
define bar 1 of cardinfo prompt '\<view charges' ;
key alt+v, ''
define bar 2 of cardinfo prompt 'view \<payments' ;
key alt+p, ''
define bar 3 of cardinfo prompt 'vie\<w users' ;
key alt+w, ''
define bar 4 of cardinfo prompt '\-'
define bar 5 of cardinfo prompt '\<charges '
on selection popup cardinfo;
do choice in deacmenu with prompt( ), popup( )
activate menu example
deactivate menu example
release menu example extended
set sysmenu nosave
set sysmenu to default
on key label esc
procedure choice
parameters mprompt, mpopup
wait window 'you chose ' + mprompt + ;
' from popup ' + mpopup nowait