下面的示例使用 define popup 创建菜单,该菜单在选择菜单栏中的菜单标题时被激活。首先用 set sysmenu save
将当前系统菜单栏存入内存,然后用 set sysmenu to 将所有的系统菜单标题删除。用 define pad 创建两个新的系统菜单标题,definf popup
为每个菜单标题创建一个下拉式菜单。define bar 在每个菜单上创建菜单项。当选择一个菜单标题时,on pad 使用 activate
popup 激活相应的菜单。当从一个菜单中选择一个菜单项时,on selection popup
使用 prompt( ) 和popup( ) 函数将菜单项号和菜单名传递给 choice 过程。choice 过程显示被选项的文本和包含该项的菜单名。如果从“card info”菜单中选择了“exit”项,就恢复到最初的 visual foxpro 系统菜单。
*** 该程序名为 definpop.prg ***
clear
set sysmenu save
set sysmenu to
define pad convpad of _msysmenu prompt '\<conversions' color scheme 3 ;
key alt+c, ''
define pad cardpad of _msysmenu prompt 'card \<info' color scheme 3 ;
key alt+i, ''
on pad convpad of _msysmenu activate popup conversion
on pad cardpad of _msysmenu 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 definpop 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 '
define bar 6 of cardinfo prompt '\-'
define bar 7 of cardinfo prompt 'e\<xit '
on selection popup cardinfo;
do choice in definpop with prompt( ), popup( )
procedure choice
parameters mprompt, mpopup
wait window 'you chose ' + mprompt + ;
' from popup ' + mpopup nowait
if mprompt = 'exit'
set sysmenu to default
endif