define popup 命令示例

下面的示例使用 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