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
第五章 菜单设计
第一节 下拉式菜单设计第二节 弹出式菜单设计
第五章 菜单设计
本章开始介绍如何运用 VFP 的可视化工具来设计所需要的界面和报表,首先介绍下拉式菜单和快捷菜单设计。
5.1 下拉式菜单设计5.1.1 菜单生成的基本步骤 一、打开菜单设计器窗口 1 、通过系统菜单来建立或打开 ( 1 )菜单的建立 “ 文件”菜单“新建”命令→在新建对话框选定“菜单”选
项→“新建文件”按钮→出现如图所示新菜单对话框
5.1.1 菜单生成的基本步骤
( 2 )菜单的打开 “ 文件”菜单“打开”命令→在打开对话框的文件
类型组合框选定“菜单”选项→在文件列表选定某菜单文件→按“确定”按钮→出现菜单设计器窗口或快捷菜单设计器窗口
2 、用命令建立或打开 MODIFY MENU < 文件名 >
菜单文件扩展名为 .MNX, 此处准许缺省
文件名为新名称时为建立,否则为打开
5.1.1 菜单生成的基本步骤3 、通过项目管理器打开或建立 新建或打开项目管理器→在项目管理器窗口”其它“之“ 菜单”选项 → 选定“新建”按钮,打开菜单设计器窗口建立菜单 → 选定“添加”按钮,选定加入某已有菜单,按“修
改”按钮打开菜单设计器窗口。二、菜单设计 菜单设计器窗口打开后,系统菜单会增加一个“菜单”之菜单选项,“显示”菜单也会增加两个命令,供用户使用见下页图。
三、保存菜单定义
菜单设计或修改结束、菜单设计窗口未关闭前可用如下四种方法保存菜单定义
( 1 )单击菜单设计窗口的“关闭”按钮,按要求应答 ( 2 )按 Ctrl+W ( 3 )系统菜单中“文件”菜单“保存”命令,保存菜单定
义但不关闭菜单设计窗口 ( 4 )在未保存 菜单定义的情况 下,在生成菜单 程序时会出现如 右询问窗口。 注意:菜单文件扩展名 .MNX, 菜单备注文件扩展名 .MNT
四、生成菜单程序
“ 菜单”菜单“生成”命令出现生成菜单对话框
用户单击“生成”按钮(默认文件名)或修改菜单文件
名后按“生成”按钮,将生成菜单程序 菜单程序主名与菜单定义文件相同,扩展名为 .MPR
五、运行菜单程序
DO < 菜单程序主名 >.MPR
在运行菜单程序时, VFP 会自动对新建或修改后
的 .MPR 文件进行编译产生目标程序 .MPX ,程序真正运
行的是编译后产生的目标程序 .MPX 。
.MPR 不可省略
5.1.2 快速菜单命令
系统菜单的“菜单” 选项之“快速菜单”命令, VFP 系统系统菜单自动复制到菜单设计器窗口(菜单设计器窗口为空时),用户可在此基础上进行修改。注:仅可用于下拉式菜单,不能用于快捷菜单。
[P162 例 5-1] ( 1 )打开菜单设计器窗口:命令窗口键入 MODIFY ME
NU cd, 出现“新建菜单”对话框后,选定“菜单”选项。 ( 2 )出现菜单设计器窗口后,选定“菜单” 选项之
“快速菜单”命令, VFP 系统系统菜单自动复制到菜单设计器窗口,如下页图所示
( 3 )生成菜单程序:选定“菜单” 选项之“生成”命令→在“保存文件”确认框选定“保存”按钮,保存菜单文件至 cd.MNX 和菜单备注文件 cd.MNT → 在“生成菜单”对话框选定“生成”按钮,产生菜单程序 cd.MPR
( 5 )运行菜单程序: DO cd.MPR
恢复系统菜单键入如下命令 SET SYSMENU TO DEFAULT
生成的菜单可根据需要进行必要的修改
5.1.3 菜单设计器窗口
菜单列表框 , 一个菜单项占一行
下级菜单到上级菜单的切换
插入菜单项
删除菜单项
菜单模拟显示
5.1.3 菜单设计器窗口
一、“菜单名称”列 输入菜单项名称,该名称只用来显示。 可定义访问键,格式为( \< 字母 ) ,只要按下访问键就执
行菜单项功能。二、“结果”列 定义菜单的性质,分为如下 4 个选项 1 、命令 为菜单项定义一条动作命令,命令输入到其右边的文本框 2 、过程 为菜单项定义一条动作过程,该过程可在按“创建”或“编
辑”按钮后呈现的文本框内输入。
访问键为 Alt+ < 字母>
二、“结果”列 3 、子菜单 为菜单项定义下一级菜单,在按“创建”或“编辑”
按钮后,菜单设计器切换到子菜单页,供用户建立和修改子菜单。 在子菜单页,选择右上角菜单级组合框“菜单栏”选项返回上一级菜单。4 、填充名称或菜单项 # 让用户为菜单项第一级菜单的名称(填充名称)或子菜单序号(菜单项 #) ,名称或序号可在右边呈现的文本框内输入。
三、“选项”列
每个菜单行都有一个无符号按钮,如下所示
按动该按钮,提示选项对话框,定义菜单项的附加功能
无符号按钮
快捷键定义,光标定位该框,按组合键即可
定义菜单项跳过条件,当其为真,则该菜单项以浅色显示
设置菜单项说明信息,但必须用引号括起来
5.1.4 “ 显示”菜单的命令
菜单设计器打开后, “显示”菜单增加两条命令
一、常规选项 选定常规选项命令,出现常规选项对话框,内含一框
二区
为第一级菜单中未定义过任何命令或过程的菜单项定义公共过程
缺省选项,以用户定义菜单取代系统菜单
用户定义的菜单追加在当前菜单之右
输入菜单程序的初始化代码,位于菜单程序首部
输入菜单程序的清理代码,位于
菜单程序尾部
用户定义的菜单添加到某菜
单项的前面
用户定义的菜单添加到某菜
单项的后面某菜单项的选择组合框
5.2 弹出式菜单设计
5.2.1 用菜单设计器设计快捷菜单 快捷菜单是一种单击右键才出现的弹出式菜单弹出快捷菜单的命令: ON KEY LABEL RIGHTMOUSE DO < 快捷菜单文件 >
[P168 例 5-3]
( 1 )打开快捷菜单设计器窗口: “ 文件”菜单“新建”命令→在新建对话框选定“菜
单”选项→“新建文件”按钮→在新菜单对话框选定“快捷菜单”按钮,将出现快捷菜单设计器窗口,设计快捷菜单
在快捷菜单设计器窗口选定“插入栏”按钮→出现下页图所示“插入系统菜单栏”对话框 .选定“粘贴”选项,并按“插入”按钮 类似地插入复制、剪切、撤消选项 按“关闭”按钮返回快捷菜单设计器窗口。此时的快捷菜单设计器窗口如下页图所示
( 2 )插入系统菜单
( 3 )生成菜单程序 “ 菜单”菜单“生成”命令→保存文件时菜单文件主
名取为 E5-3, 菜单保存在 E5-3.MNX,菜单备注保存在 E5-3.MNT → 在生成菜单对话框单击“生成”按钮→将生成菜单程序 E5-3.MPR
(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, 出现浏览器窗口后,单击鼠标右键,出现如图快捷菜单
5.2.1 用菜单命令为弹出式菜单编程
利用菜单编程命令可以设计出各种各样的弹出式菜单一、定义弹出式系统
DEFINE POPUP < 弹出式菜单名 > [TITLE < 字符表达式 1>] [FROM < 行坐标 1, 列坐标 1>] [TO < 行坐标 2, 列坐标 2>] [IN [WINDOW] < 窗口名 >|IN SCREEN] [KEY < 键标号 >]
菜单名称菜单标题
左上角坐标 ,省略 (0,0)
右下角坐标
窗口名指定菜单窗口的父窗口 ,SCREEN 表示父窗口为
VFP 主窗口
设置快捷键{Ctrl+字母 }
[MARGIN] [MESSAGE < 字符表达式 >] [MOVER] [MULTISELECT]
[PROMPT FIELD < 表达式 >|PROMPT FILES [LIKE < 通配符表达式 >]
|PROMPT STRUCTURE]
[SCROLL]
为菜单项的标记留出一
定空间
一次使用户选定多个菜单项 ,被选中行变深色
使第一个选项左边出现双向箭头 ,鼠标拖动可改变菜单项的顺
序
以字段为内容的滚动列表 , 该子句不能与 MULTISELECT
和 MOVER 一同使用以磁盘文件名列
表 , 文件名用通配符表达式来指定
用来定义一个表结构的所有
字段名列表
在组合框增加滚动条
二、定义弹出式菜单的菜单项
DEFINE BAR <数值表达式 1> OF < 弹出式菜单名 > PROMPT < 字符表达式 1> [BEFORE <数值表达式 2 > |AFTER <数值表达式 3>] [KEY < 键标号 >[,< 字符表达式 2>]] [MESSAGE< 字符表达式 3>] [SKIP [FOR <逻辑表达式 >]]
菜单项序号 指定菜单
菜单项显示名
把菜单项放在其指定的菜单项之前
把菜单项放在其指定的菜单项之后
逻辑表达式为真跳过该菜单项
三、定义弹出式菜单菜单项的动作
格式 1: 把菜单项的动作定义为激活另一个菜单 ON BAR <数值表达式 > OF < 弹出式菜单名 1> [ACTIVATE POPUP < 弹出式菜单名 2 >] 格式 2:选择数值表达式表示的菜单项后就执行命令 ON SELECTION BAR <数值表达式 > OF < 弹出式菜单名 > [< 命令>]
格式 3:选择由 < 弹出式菜单名 >所代表的菜单中的任一项后均行命令
ON SELECTION POPUP < 弹出式菜单名 >|ALL [< 命令 >]指所有已经激活的弹出
式菜单中的任一项
四、激活弹出式菜单
激活由 < 弹出式菜单名 >指定的菜单
ACTIVATE POPUP < 弹出式菜单名 > [AT < 行坐标 , 列坐标 >] [BAR <数值表达式 >] [NOWAIT] [REST]
左上角坐标 ,优先级高于DEFINE 命令中 FROM
所激活菜单的当前菜单
项的序号菜单激活后程
序继续执行 若菜单定义 PROMPT FIELDS子句 , 则使表当前记录的字段内容成
为当前可选项 )
[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 运行后如图所示
[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
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
运行结果
procedure xzfor i=1 to 4 && 产生选项序列 if mrkbar('jj',i)=.T. and not str(i,1)$m * i表示所选菜单选项的序号 m=m+str(i,1) &&选项号添入选项序列后 endifnext
$: 包含左字符串是右字符串的子串为真
[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