O N B A R 命 令
指定从菜单中选择特定菜单项时激活的菜单或菜单栏
语 法
ON BAR nMenuItemNumber OF MenuName1
[ACTIVATE POPUP MenuName2
| ACTIVATE MENU MenuBarNam e ]
参 数 描 述
nMenuItemNumber OF MenuName1
指 定 菜 单 项 的 编 号 及 所 在 菜 单 该 菜 单 项 将 激 活 其 他 菜 单 或 菜 单 栏 菜 单 中的 每 一 项 都 可 以 拥 有 指 定 给 它 的 另 外 一 个 菜 单 或 菜 单 栏
凡拥有指定菜单或菜单栏的菜单项右部都有一个箭头 该箭头表示选中此项时将激活额外的菜单或菜单栏 如果使用 DEFINE POPUP ... MARGIN 定义菜单 则在每一菜单项上为层叠式子菜单箭头留出空间 若在创建菜单时不使用 MARGIN 子句 层叠式子菜单箭头可能会改写菜单项最后一个字符
ACTIVATE POPUP MenuName2
指 定 选 择 该 菜 单 项 时 激 活 的 菜 单 名 称 使 用 不 带 ACTIVATE POPUP 的 O N BAR 命 令 可 以 从 菜 单 项 中 释 放 菜 单
ACTIVATE MENU MenuBarName
指 定 选 择 该 菜 单 项 时 激 活 的 菜 单 栏 名 称 使 用 不 带 ACTIVATE POPUP 的
ON BAR 命 令 可 以 从 菜 单 项 中 释 放 菜 单 栏
说 明
一个可以显示和激活其他菜单的菜单称为层叠式子菜单 当选中菜单中的菜单项时使用 ON SELECTION BAR 或 ON SELECTION POPUP 命令可以执行一条命令
菜单或菜单栏可以是用户自定义的 用 DEFINE POPUP 和 DEFINE MENU 创 建也可以是 Visual FoxPro 菜单系统的一部分
示 例
下面的示例演示了一个层叠子菜单系统 创建了有两个菜单栏标题的菜单栏mnuDinner 每个标题用 ON PAD 激活 popMainCourse 或 popDessert 菜单 名称为popMainCourse 和 popDessert 的菜单都有附加的菜单 popBurger popPizza 和
popPie 它们是用三个 ON BAR 命令分配给项列表的 popOlives 和 popPie 项 有用两个 ON BAR 命令分配的附加菜单
作出选择后 ON SELECTION POPUP ALL 执行一 个 yourchoice 过 程 它激活窗口并且显示您的选择 用 POPUP( ) 和 PROMPT( ) 确定选择 并返回菜单名称和菜单项的内 容 文本
DEFINE WINDOW wOrder FROM 10,0 TO 13,39
DEFINE MENU mnuDinner
DEFINE PAD padOne OF mnuDinner PROMPT '\<Main Course' KEY ALT+M, '' DEFINE PAD padTwo OF mnuDinner PROMPT '\<Dessert' KEY ALT+D, ''
ON PAD padOne OF mnuDinner ACTIVATE POPUP popMainCourse
ON PAD padTwo OF mnuDinner ACTIVATE POPUP dessert DEFINE POPUP popMainCourse MARGIN MESSAGE ;
'We have burgers and pizza today'
DEFINE BAR 1 OF popMainCourse PROMPT '\<Hamburgers' DEFINE BAR 2 OF popMainCourse PROMPT '\<Pizza'
ON BAR 1 OF popMainCourse ACTIVATE POPUP burger ON BAR 2 OF popMainCourse ACTIVATE POPUP pizza DEFINE POPUP burger MARGIN MESSAGE ;
'What would you like on your burger?' DEFINE BAR 1 OF burger PROMPT '\<Ketchup' DEFINE BAR 2 OF burger PROMPT '\<Mustard' DEFINE BAR 3 OF burger PROMPT '\<Onions' DEFINE BAR 4 OF burger PROMPT '\<Pickles' DEFINE POPUP pizza MARGIN MESSAGE ;
'Here are the available toppings'
DEFINE BAR 1 OF pizza PROMPT '\<Anchovies' DEFINE BAR 2 OF pizza PROMPT '\<Green Peppers' DEFINE BAR 3 OF pizza PROMPT '\<Olives'
DEFINE BAR 4 OF pizza PROMPT '\<Pepperoni' ON BAR 3 OF pizza ACTIVATE POPUP olives DEFINE POPUP olives MARGIN
DEFINE BAR 1 OF olives PROMPT '\<Black' MESSAGE 'Black olives?' DEFINE BAR 2 OF olives PROMPT '\<Green' MESSAGE 'Green olives?' DEFINE POPUP dessert MARGIN MESSAGE 'Our dessert offerings' DEFINE BAR 1 OF dessert PROMPT '\<Brownies'
DEFINE BAR 2 OF dessert PROMPT '\<Cookies' DEFINE BAR 3 OF dessert PROMPT '\<Ice Cream' DEFINE BAR 4 OF dessert PROMPT '\<Pie'
ON BAR 4 OF dessert ACTIVATE POPUP pie
DEFINE POPUP pie MARGIN MESSAGE 'What kind of pie?'
DEFINE BAR 1 OF pie PROMPT '\<Blueberry' DEFINE BAR 2 OF pie PROMPT '\<Cherry' DEFINE BAR 3 OF pie PROMPT '\<Peach'
DEFINE BAR 4 OF pie PROMPT '\<Rhubarb' ON SELECTION POPUP ALL DO yourchoice ACTIVATE MENU mnuDinner
PROCEDURE yourchoice ACTIVATE WINDOW wOrder CLEAR
DO CASE
CASE POPUP( ) = 'BURGER'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered a burger with ' + LOWER(PROMPT( )) CASE POPUP( ) = 'PIZZA'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered a pizza with ' + LOWER(PROMPT( )) CASE POPUP( ) = 'OLIVES'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered a p izza with ' ;
+ LOWER(PROMPT( )) + ' olives' CASE POPUP( ) = 'DESSERT'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'You ordered ' + LOWER(PROMPT( )) + ' for dessert' CASE POPUP( ) = 'PIE'
@ 0,0 SAY 'A ' + POPUP( ) + ' order:'
@ 1,0 SAY 'Yo u ordered ' + LOWER(PROMPT( )) + ' pie' ENDCASE
WAIT WINDOW
DEACTIVATE WINDOW wOrder RETURN
请 参 阅
ACTIVATE MENU, DEFINE BAR, DEFINE MENU, DEFINE POPUP, ON SELECTION BAR, ON SELECTION POPUP