33
第第第 第第第第 第 第第第第第第第 第第第 第第第第第第第

第五章 菜单设计

  • Upload
    thy

  • View
    93

  • Download
    0

Embed Size (px)

DESCRIPTION

第五章 菜单设计. 第一节 下拉式菜单设计 第二节 弹出式菜单设计. 第五章 菜单设计. 本章开始介绍如何运用 VFP 的可视化工具来设计所需要的界面和报表,首先介绍下拉式菜单和快捷菜单设计。 5.1 下拉式菜单设计 5.1.1 菜单生成的基本步骤 一、打开菜单设计器窗口 1 、通过系统菜单来建立或打开 ( 1 )菜单的建立 “ 文件 ” 菜单 “ 新建 ” 命令→在新建对话框选定 “ 菜单 ” 选项→ “ 新建文件 ” 按钮→出现如图所示新菜单对话框. 5.1.1 菜单生成的基本步骤. ( 2 )菜单的打开 - PowerPoint PPT Presentation

Citation preview

Page 1: 第五章 菜单设计

第五章 菜单设计

第一节 下拉式菜单设计第二节 弹出式菜单设计

Page 2: 第五章 菜单设计

第五章 菜单设计

本章开始介绍如何运用 VFP 的可视化工具来设计所需要的界面和报表,首先介绍下拉式菜单和快捷菜单设计。

5.1 下拉式菜单设计5.1.1 菜单生成的基本步骤 一、打开菜单设计器窗口 1 、通过系统菜单来建立或打开 ( 1 )菜单的建立 “ 文件”菜单“新建”命令→在新建对话框选定“菜单”选

项→“新建文件”按钮→出现如图所示新菜单对话框

Page 3: 第五章 菜单设计

5.1.1 菜单生成的基本步骤

( 2 )菜单的打开 “ 文件”菜单“打开”命令→在打开对话框的文件

类型组合框选定“菜单”选项→在文件列表选定某菜单文件→按“确定”按钮→出现菜单设计器窗口或快捷菜单设计器窗口

2 、用命令建立或打开 MODIFY MENU < 文件名 >

菜单文件扩展名为 .MNX, 此处准许缺省

文件名为新名称时为建立,否则为打开

Page 4: 第五章 菜单设计

5.1.1 菜单生成的基本步骤3 、通过项目管理器打开或建立 新建或打开项目管理器→在项目管理器窗口”其它“之“ 菜单”选项 → 选定“新建”按钮,打开菜单设计器窗口建立菜单 → 选定“添加”按钮,选定加入某已有菜单,按“修

改”按钮打开菜单设计器窗口。二、菜单设计 菜单设计器窗口打开后,系统菜单会增加一个“菜单”之菜单选项,“显示”菜单也会增加两个命令,供用户使用见下页图。

Page 5: 第五章 菜单设计
Page 6: 第五章 菜单设计

三、保存菜单定义

菜单设计或修改结束、菜单设计窗口未关闭前可用如下四种方法保存菜单定义

( 1 )单击菜单设计窗口的“关闭”按钮,按要求应答 ( 2 )按 Ctrl+W ( 3 )系统菜单中“文件”菜单“保存”命令,保存菜单定

义但不关闭菜单设计窗口 ( 4 )在未保存 菜单定义的情况 下,在生成菜单 程序时会出现如 右询问窗口。 注意:菜单文件扩展名 .MNX, 菜单备注文件扩展名 .MNT

Page 7: 第五章 菜单设计

四、生成菜单程序

“ 菜单”菜单“生成”命令出现生成菜单对话框

用户单击“生成”按钮(默认文件名)或修改菜单文件

名后按“生成”按钮,将生成菜单程序 菜单程序主名与菜单定义文件相同,扩展名为 .MPR

Page 8: 第五章 菜单设计

五、运行菜单程序

DO < 菜单程序主名 >.MPR

在运行菜单程序时, VFP 会自动对新建或修改后

的 .MPR 文件进行编译产生目标程序 .MPX ,程序真正运

行的是编译后产生的目标程序 .MPX 。

.MPR 不可省略

Page 9: 第五章 菜单设计

5.1.2 快速菜单命令

系统菜单的“菜单” 选项之“快速菜单”命令, VFP 系统系统菜单自动复制到菜单设计器窗口(菜单设计器窗口为空时),用户可在此基础上进行修改。注:仅可用于下拉式菜单,不能用于快捷菜单。

[P162 例 5-1] ( 1 )打开菜单设计器窗口:命令窗口键入 MODIFY ME

NU cd, 出现“新建菜单”对话框后,选定“菜单”选项。 ( 2 )出现菜单设计器窗口后,选定“菜单” 选项之

“快速菜单”命令, VFP 系统系统菜单自动复制到菜单设计器窗口,如下页图所示

Page 10: 第五章 菜单设计

( 3 )生成菜单程序:选定“菜单” 选项之“生成”命令→在“保存文件”确认框选定“保存”按钮,保存菜单文件至 cd.MNX 和菜单备注文件 cd.MNT → 在“生成菜单”对话框选定“生成”按钮,产生菜单程序 cd.MPR

Page 11: 第五章 菜单设计

( 5 )运行菜单程序: DO cd.MPR

恢复系统菜单键入如下命令 SET SYSMENU TO DEFAULT

生成的菜单可根据需要进行必要的修改

Page 12: 第五章 菜单设计

5.1.3 菜单设计器窗口

菜单列表框 , 一个菜单项占一行

下级菜单到上级菜单的切换

插入菜单项

删除菜单项

菜单模拟显示

Page 13: 第五章 菜单设计

5.1.3 菜单设计器窗口

一、“菜单名称”列 输入菜单项名称,该名称只用来显示。 可定义访问键,格式为( \< 字母 ) ,只要按下访问键就执

行菜单项功能。二、“结果”列 定义菜单的性质,分为如下 4 个选项 1 、命令 为菜单项定义一条动作命令,命令输入到其右边的文本框 2 、过程 为菜单项定义一条动作过程,该过程可在按“创建”或“编

辑”按钮后呈现的文本框内输入。

访问键为 Alt+ < 字母>

Page 14: 第五章 菜单设计

二、“结果”列 3 、子菜单 为菜单项定义下一级菜单,在按“创建”或“编辑”

按钮后,菜单设计器切换到子菜单页,供用户建立和修改子菜单。 在子菜单页,选择右上角菜单级组合框“菜单栏”选项返回上一级菜单。4 、填充名称或菜单项 # 让用户为菜单项第一级菜单的名称(填充名称)或子菜单序号(菜单项 #) ,名称或序号可在右边呈现的文本框内输入。

Page 15: 第五章 菜单设计

三、“选项”列

每个菜单行都有一个无符号按钮,如下所示

按动该按钮,提示选项对话框,定义菜单项的附加功能

无符号按钮

Page 16: 第五章 菜单设计

快捷键定义,光标定位该框,按组合键即可

定义菜单项跳过条件,当其为真,则该菜单项以浅色显示

设置菜单项说明信息,但必须用引号括起来

Page 17: 第五章 菜单设计

5.1.4 “ 显示”菜单的命令

菜单设计器打开后, “显示”菜单增加两条命令

一、常规选项 选定常规选项命令,出现常规选项对话框,内含一框

二区

Page 18: 第五章 菜单设计

为第一级菜单中未定义过任何命令或过程的菜单项定义公共过程

缺省选项,以用户定义菜单取代系统菜单

用户定义的菜单追加在当前菜单之右

输入菜单程序的初始化代码,位于菜单程序首部

输入菜单程序的清理代码,位于

菜单程序尾部

Page 19: 第五章 菜单设计

用户定义的菜单添加到某菜

单项的前面

用户定义的菜单添加到某菜

单项的后面某菜单项的选择组合框

Page 20: 第五章 菜单设计

5.2 弹出式菜单设计

5.2.1 用菜单设计器设计快捷菜单 快捷菜单是一种单击右键才出现的弹出式菜单弹出快捷菜单的命令: ON KEY LABEL RIGHTMOUSE DO < 快捷菜单文件 >

[P168 例 5-3]

( 1 )打开快捷菜单设计器窗口: “ 文件”菜单“新建”命令→在新建对话框选定“菜

单”选项→“新建文件”按钮→在新菜单对话框选定“快捷菜单”按钮,将出现快捷菜单设计器窗口,设计快捷菜单

Page 21: 第五章 菜单设计

在快捷菜单设计器窗口选定“插入栏”按钮→出现下页图所示“插入系统菜单栏”对话框 .选定“粘贴”选项,并按“插入”按钮 类似地插入复制、剪切、撤消选项 按“关闭”按钮返回快捷菜单设计器窗口。此时的快捷菜单设计器窗口如下页图所示

( 2 )插入系统菜单

Page 22: 第五章 菜单设计

( 3 )生成菜单程序 “ 菜单”菜单“生成”命令→保存文件时菜单文件主

名取为 E5-3, 菜单保存在 E5-3.MNX,菜单备注保存在 E5-3.MNT → 在生成菜单对话框单击“生成”按钮→将生成菜单程序 E5-3.MPR

Page 23: 第五章 菜单设计

(4) 编写如下调用程序

clear all push key clear && 清除以前设置过的功能键 * 设置鼠标右键为功能键,预制弹出式菜单 on key label rightmouse do e5-3.mpr use sb browse && 打开浏览窗口 use push key clear( 5 )运行调用程序及快捷菜单 do e5-3, 出现浏览器窗口后,单击鼠标右键,出现如图快捷菜单

Page 24: 第五章 菜单设计

5.2.1 用菜单命令为弹出式菜单编程

利用菜单编程命令可以设计出各种各样的弹出式菜单一、定义弹出式系统

DEFINE POPUP < 弹出式菜单名 > [TITLE < 字符表达式 1>] [FROM < 行坐标 1, 列坐标 1>] [TO < 行坐标 2, 列坐标 2>] [IN [WINDOW] < 窗口名 >|IN SCREEN] [KEY < 键标号 >]

菜单名称菜单标题

左上角坐标 ,省略 (0,0)

右下角坐标

窗口名指定菜单窗口的父窗口 ,SCREEN 表示父窗口为

VFP 主窗口

设置快捷键{Ctrl+字母 }

Page 25: 第五章 菜单设计

[MARGIN] [MESSAGE < 字符表达式 >] [MOVER] [MULTISELECT]

[PROMPT FIELD < 表达式 >|PROMPT FILES [LIKE < 通配符表达式 >]

|PROMPT STRUCTURE]

[SCROLL]

为菜单项的标记留出一

定空间

一次使用户选定多个菜单项 ,被选中行变深色

使第一个选项左边出现双向箭头 ,鼠标拖动可改变菜单项的顺

以字段为内容的滚动列表 , 该子句不能与 MULTISELECT

和 MOVER 一同使用以磁盘文件名列

表 , 文件名用通配符表达式来指定

用来定义一个表结构的所有

字段名列表

在组合框增加滚动条

Page 26: 第五章 菜单设计

二、定义弹出式菜单的菜单项

DEFINE BAR <数值表达式 1> OF < 弹出式菜单名 > PROMPT < 字符表达式 1> [BEFORE <数值表达式 2 > |AFTER <数值表达式 3>] [KEY < 键标号 >[,< 字符表达式 2>]] [MESSAGE< 字符表达式 3>] [SKIP [FOR <逻辑表达式 >]]

菜单项序号 指定菜单

菜单项显示名

把菜单项放在其指定的菜单项之前

把菜单项放在其指定的菜单项之后

逻辑表达式为真跳过该菜单项

Page 27: 第五章 菜单设计

三、定义弹出式菜单菜单项的动作

格式 1: 把菜单项的动作定义为激活另一个菜单 ON BAR <数值表达式 > OF < 弹出式菜单名 1> [ACTIVATE POPUP < 弹出式菜单名 2 >] 格式 2:选择数值表达式表示的菜单项后就执行命令 ON SELECTION BAR <数值表达式 > OF < 弹出式菜单名 > [< 命令>]

格式 3:选择由 < 弹出式菜单名 >所代表的菜单中的任一项后均行命令

ON SELECTION POPUP < 弹出式菜单名 >|ALL [< 命令 >]指所有已经激活的弹出

式菜单中的任一项

Page 28: 第五章 菜单设计

四、激活弹出式菜单

激活由 < 弹出式菜单名 >指定的菜单

ACTIVATE POPUP < 弹出式菜单名 > [AT < 行坐标 , 列坐标 >] [BAR <数值表达式 >] [NOWAIT] [REST]

左上角坐标 ,优先级高于DEFINE 命令中 FROM

所激活菜单的当前菜单

项的序号菜单激活后程

序继续执行 若菜单定义 PROMPT FIELDS子句 , 则使表当前记录的字段内容成

为当前可选项 )

Page 29: 第五章 菜单设计

[P172 例 5-4]

clear define popup bb margin title dtoc(date()) from 10,30 define bar 1 of bb prompt ' 月报表 ' key CTRL+Y,'^Y' define bar 2 of bb prompt ' 季报表 ' key CTRL+J,'^J' define bar 3 of bb prompt ' 年报表 ' key CTRL+n,'^N' on selection bar 1 of bb ?"DO p1" on selection bar 2 of bb ?"DO p2" on selection bar 3 of bb ?"DO p3" activate popup bb 运行后如图所示

Page 30: 第五章 菜单设计

[P172 例 5-5]

clear m='' && 用来存储选项序列 define popup jj from 5,5 multiselect ; margin title ‘ 四季月份’ * 定义多选型弹出菜单选项 define bar 1 of jj prompt '春 ' define bar 2 of jj prompt '夏 ' define bar 3 of jj prompt '秋 ' define bar 4 of jj prompt '冬 ' on selection popup jj do xz * 过程被所有选项共用 activate popup jj

Page 31: 第五章 菜单设计

for j=1 to len(m) do case case subs(m,j,1)='1' ?'3-5月 ' case subs(m,j,1)='2' ?'6-8 月 ' case subs(m,j,1)='3' ?'9-11月 ' case subs(m,j,1)='3' ?'12-2月 ' endcasenext

Page 32: 第五章 菜单设计

运行结果

procedure xzfor i=1 to 4 && 产生选项序列 if mrkbar('jj',i)=.T. and not str(i,1)$m * i表示所选菜单选项的序号 m=m+str(i,1) &&选项号添入选项序列后 endifnext

$: 包含左字符串是右字符串的子串为真

Page 33: 第五章 菜单设计

[P173 例 5-6]

use sbdefine popup sbzd from 5,5 to 11,22 scroll prompt structureon selection popup sbzd do tsactivate popup sbzdprocedure tsdo case case bar()=1 ? prmbar('sbzd',1) case bar()=2 ? prmbar('sbzd',2) otherwise ?" 其余 "endcase