O N B A R 命 令

O N B A R 命 令 - 图1指定从菜单中选择特定菜单项时激活的菜单或菜单栏

语 法

ON BAR nMenuItemNumber OF MenuName1

[ACTIVATE POPUP MenuName2

| ACTIVATE MENU MenuBarNam e ]

参 数 描 述

nMenuItemNumber OF MenuName1

O N B A R 命 令 - 图2O N B A R 命 令 - 图3O N B A R 命 令 - 图4指 定 菜 单 项 的 编 号 及 所 在 菜 单 该 菜 单 项 将 激 活 其 他 菜 单 或 菜 单 栏 菜 单 中的 每 一 项 都 可 以 拥 有 指 定 给 它 的 另 外 一 个 菜 单 或 菜 单 栏

O N B A R 命 令 - 图5O N B A R 命 令 - 图6O N B A R 命 令 - 图7O N B A R 命 令 - 图8O N B A R 命 令 - 图9O N B A R 命 令 - 图10凡拥有指定菜单或菜单栏的菜单项右部都有一个箭头 该箭头表示选中此项时将激活额外的菜单或菜单栏 如果使用 DEFINE POPUP ... MARGIN 定义菜单 则在每一菜单项上为层叠式子菜单箭头留出空间 若在创建菜单时不使用 MARGIN 子句 层叠式子菜单箭头可能会改写菜单项最后一个字符

ACTIVATE POPUP MenuName2

O N B A R 命 令 - 图11O N B A R 命 令 - 图12O N B A R 命 令 - 图13指 定 选 择 该 菜 单 项 时 激 活 的 菜 单 名 称 使 用 不 带 ACTIVATE POPUP 的 O N BAR 命 令 可 以 从 菜 单 项 中 释 放 菜 单

ACTIVATE MENU MenuBarName

O N B A R 命 令 - 图14指 定 选 择 该 菜 单 项 时 激 活 的 菜 单 栏 名 称 使 用 不 带 ACTIVATE POPUP 的

O N B A R 命 令 - 图15O N B A R 命 令 - 图16ON BAR 命 令 可 以 从 菜 单 项 中 释 放 菜 单 栏

说 明

O N B A R 命 令 - 图17O N B A R 命 令 - 图18O N B A R 命 令 - 图19一个可以显示和激活其他菜单的菜单称为层叠式子菜单 当选中菜单中的菜单项时使用 ON SELECTION BAR 或 ON SELECTION POPUP 命令可以执行一条命令

O N B A R 命 令 - 图20O N B A R 命 令 - 图21O N B A R 命 令 - 图22O N B A R 命 令 - 图23菜单或菜单栏可以是用户自定义的 用 DEFINE POPUP 和 DEFINE MENU 创 建也可以是 Visual FoxPro 菜单系统的一部分

示 例

O N B A R 命 令 - 图24O N B A R 命 令 - 图25O N B A R 命 令 - 图26O N B A R 命 令 - 图27下面的示例演示了一个层叠子菜单系统 创建了有两个菜单栏标题的菜单栏mnuDinner 每个标题用 ON PAD 激活 popMainCourse 或 popDessert 菜单 名称为popMainCourse 和 popDessert 的菜单都有附加的菜单 popBurger popPizza 和

O N B A R 命 令 - 图28O N B A R 命 令 - 图29O N B A R 命 令 - 图30popPie 它们是用三个 ON BAR 命令分配给项列表的 popOlives 和 popPie 项 有用两个 ON BAR 命令分配的附加菜单

O N B A R 命 令 - 图31O N B A R 命 令 - 图32O N B A R 命 令 - 图33O N B A R 命 令 - 图34O N B A R 命 令 - 图35作出选择后 ON SELECTION POPUP ALL 执行一 个 yourchoice 过 程 它激活窗口并且显示您的选择 用 POPUP( ) 和 PROMPT( ) 确定选择 并返回菜单名称和菜单项的内 容 O N B A R 命 令 - 图36 文本 O N B A R 命 令 - 图37

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