activate popup 命令示例

这个示例在选择一个菜单标题后,用 activate popup 命令激活菜单。当前系统菜单栏先用 set sysmenu save 命令存入内存,然后用 set sysmenu to 命令删除所有系统菜单标题。用 define pad 命令创建两个新的系统菜单标题,并且用 define  popup 命令为每一个菜单标题创建一个菜单,再用 define bar 命令为每个菜单创建建菜单项。当选择一个菜单标题后,on pad 命令通过 activate popup 子句激活相应的菜单。
从菜单中选择某个菜单项后,将执行 choice 过程。choice 过程将显示选定的菜单项名和对应菜单名。如果从 card info 菜单中选择 exit 菜单项,将恢复为原来的 visual foxpro 系统菜单。

*** 此程序名为 actipop.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 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 actipop with prompt(), popup()
define popup cardinfo margin relative 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' ;
   key alt+c, ''
define bar 6 of cardinfo prompt '\-'
define bar 7 of cardinfo prompt 'e\<xit';
   key alt+x, ''
on selection popup cardinfo;
do choice in actipop 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