第8章 菜单设计、消息栏和工具栏练习一 菜单设计基本操作
【实验目的】
1.了解设计菜单的步骤;
2.熟练掌握菜单设计器创建菜单;
3.掌握菜单运行方法;
【知识要点】
一、菜单的组成
菜单系统是由菜单栏、菜单项和下拉菜单组成。菜单栏位于标题下方,用于放置各个菜单项;菜单项是菜单栏中的一个菜单的名称。单击菜单项就可弹出下拉菜单。菜单是包含命令、过程和子菜单的选项列表,可分为父菜单和子菜单两类,子菜单挂在父菜单下作为父菜单的一个菜单项。
二、菜单设计的步骤菜单设计一般包含以下几个步骤:
菜单系统的规划、建立菜单与子菜单、把任务分派到菜单系统中、生成菜单程序、测试和运行菜单系统等。
三、用菜单设计器创建菜单及子菜单
1.启动菜单设计器:
,文件/新建”-(“类型”选)“菜单”-“新建文件”钮
2.创建菜单项:
在“菜单名称”列中输入要创建的菜单项[可用“(\<字母>)”,建立热键]
3.创建子菜单:
单击“菜单名称”右侧“编辑”-(为此菜单项)输入要创建的子菜单[也可建立热键]
4.为菜单或菜单项指定任务:
选定菜单项-在“结果”栏中选“命令”(或“过程”)-在编辑框中输入相应的命令或调用其它程序
5.生成菜单程序:
,菜单/生成”-(“生成菜单”的“输出文件”框)确定菜单的名称和位置-“生成”钮(菜单的扩展名为.MPR)
凡菜单有修改,都应重新“生成”一次
6.运行菜单程序:[因菜单是一个程序,因此运行菜单就是运行程序]
(1)“程序/运行”-选定菜单(程序)-“运行”
(2)DO 菜单名.MPR
【实验内容】
一、设计菜单
1.在学生表.dbf,课程表.dbf,成绩表.dbf三个表的基础上用菜单设计器设计一个用户自定义的菜单系统:如下所示:
系统维护(S)
个人资料(D)
成绩查询(C)
报表(P)
帮助(H)
口令维护(K)
个人资料查看(Q)
个人成绩查询(G)
基本情况(O)
目录与索引(V)
退出系统(X)
个人资料修改(J)
班级成绩查询(B)
学生成绩(C)
关于…… (A)
科目成绩查询(K)
【高手进阶】
进一步完成上面的菜单操作:
为菜单或菜单项指定任务(以成绩查询中个人成绩查询为例):虽然我们完成了菜单构架的设计,但是具体功能是如何实现的呢?
【自我测试】
设计一个如下的菜单系统:
系统维护
书籍查询
数据管理
口令维护
按作者查询
数据的修改
退出系统
按书名查询
数据的增加
按出版社查询
【实验过程】
一、启动菜单设计器创建一个菜单(学生管理.mnx):
1.“文件/新建”-(“类型”选)“菜单”-“新建文件”钮
2.在菜单类型选择的时候选择菜单,这里不做快捷菜单
3.进入菜单设计器窗口

二、创建菜单项:
在“菜单名称”列中输入要创建的菜单项(就是主菜单,快捷键和热键直接在菜单名称后面输入即可)如下图:

注意:在这里结果项都是子菜单,因为他们下面都有自己的子菜单三、创建子菜单:
单击结果旁边的创建按钮即可进入该菜单的子菜单创建对话框,如给成绩查询建立子菜单:单击成绩查询然后单击创建按钮

注意:在子菜单的结果选项中,选择命令,当然其他选项也可以,因为所有的子菜单都是执行某一个功能,这里我们以个人成绩查询为例讲解整个过程。在选项中输入命令:DO FROM 个人成绩查询.scx (意思是当用户单击个人成绩查询时就运行表单FROM 个人成绩查询,进入个人成绩查询界面)
4.为菜单或菜单项指定任务,
选定菜单项-在“结果”栏中选“命令”(或“过程”)-在编辑框中输入相应的命令或调用其它程序(在2,3的一步已做分析)
5.生成菜单程序:
,菜单/生成”-(“生成菜单”的“输出文件”框)确定菜单的名称和位置-“生成”钮(菜单的扩展名为.MPR)
凡菜单有修改,都应重新“生成”一次

6.运行菜单程序:[因菜单是一个程序,因此运行菜单就是运行程序]
(1)“程序/运行”-选定菜单(程序)-“运行”
(2)DO 学生管理.mpr

【高手进阶解答】
进一步完成上面的菜单操作:
为菜单或菜单项指定任务(以成绩查询中个人成绩查询为例):虽然我们完成了菜单构架的设计,但是具体功能是如何实现的呢?就如,个人成绩查询模块的实现过程如下:
创建一个表单(个人成绩查询.scx)
添加控件一个标签对象(LABEL1),一个文本框对象(TEXT1),一个命令按钮对象(COMMAND1),一个表格对象(GRID1)
设置对象属性
LABEL1.CAPTION=”输入学号:”
LABEL1.FONTSIZE=16
TEXT1.FONTSIZE=16
COMMAND1.CAPTION=”确定”
COMMAND1.FONTSIZE=16
GRID1.ENABLED=.f.
GRID1.VISIBLE=.f.

4.设置数据环境
方法:①菜单操作,显示----﹥数据环境,把学生表,课程表,成绩表添加进来
②鼠标右键单击表单任意空白处弹出快捷菜单---﹥数据环境,把学生表,课程表,成绩表添加进来

5.编写事件代码双击“确定”按钮,出现COMMAND1的CLICK事件编辑框,事件代码为:
SELE 学生表
LOCATE FOR ALLT(THIDFORM.TEXT1.VALUE) =ALLT(学生表.学号)
IF FOUND()
THIDFORM.GRID1.ENABLED=.t.
THIDFORM.GRID1.VISIBLE=.t.
THIDFORM.GRID1.RECORDSOURCETYPE=4
THIDFORM.GRID1.RECORDSOURCE="SELECT 学生表.学号,姓名,课程名,成绩 FROM 学生表,课程表,成绩表 WHERE 学生表.学号=成绩表.学号 AND 课程表.课程号=成绩表.课程号 AND ALLT(学生表.学号)=ALLT(THIDFORM.TEXT1.VALUE) INTO CURS TEMP1"
ELSE
MESSAGEBOX("没有该学生!!")
ENDIF
THIDFORM.REFRESH
6.保存,运行及调试
保存:“保存”工具或“文件”菜单下“保存”命令等方法,但文件名要为“个人成绩查询.scx”
运行:DO 学生管理.mpr或点击“!”

【自我测试解答】
步骤(略)