《数据库基础与Visual FoxPro9.0程序设计》课件第14章_第1页
《数据库基础与Visual FoxPro9.0程序设计》课件第14章_第2页
《数据库基础与Visual FoxPro9.0程序设计》课件第14章_第3页
《数据库基础与Visual FoxPro9.0程序设计》课件第14章_第4页
《数据库基础与Visual FoxPro9.0程序设计》课件第14章_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第14章菜单14.1菜单结构概述14.2

VisualFoxPro9.0的系统菜单14.3设计自定义菜单14.4运行菜单14.5快捷菜单14.6为顶层表单添加下拉式菜单练习十四14.1菜单结构概述

14.1.1VisualFoxPro9.0的菜单分类

1.条菜单

条菜单有一组菜单选项,它们横向排列在VFP主窗口顶部的标题栏之下。每一个菜单选项都有一个选项标题和一个内部名称。菜单选项的标题将显示在屏幕上供用户识别,而菜单的内部名称则在程序代码中使用,这如同表单中控件的标题和控件的名称之间的关系。条菜单本身也有一个名称,这如同表单的名称。例如,VFP9.0系统条菜单的内部名称为“_MSYSMENU”,它的第1个选项的标题为“文件”,内部名称为“_MSM_FILE”。

2.弹出式菜单

弹出式菜单是在用户单击了条菜单的某个菜单选项标题,或右击了某个对象而弹出的一种菜单。每一个弹出式菜单也都有一个菜单名称和一组菜单选项,每一个菜单选项则有一个选项标题和选项序号。这里选项标题与条菜单的选项标题作用相同,将显示在屏幕上供用户识别;选项的序号与条菜单的选项内部名称作用相同,将在代码中被引用。

例如,当用户单击了VFP9.0主菜单的“文件”选项后,就会弹出与之对应的弹出式菜单,列出文件菜单的15个选项供用户选择,如图14.1所示。图14.1文件菜单14.1.2热键和快捷键

在VFP子菜单中,可为每一个菜单选项有选择地设置一个热键和快捷键。

1)热键

热键是一个具有特殊功能的字母键。当菜单被激活后,只要单击此字符键,就可以快速地选择该菜单选项。热键常用在弹出式菜单中。在菜单中,热键用一个带有下划线的字母给出。例如,VFP9.0文件菜单中的“新建(N)”、“打开(O)”就表示“N”、“O”分别是“新建”、“打开”选项的热键。

2)快捷键

与热键不同,快捷键是指由【Ctrl】键和一个字母键组合成的组合键。它不管菜单是否激活,只要按下它的组合键,就可以快速地选中该菜单项。例如文件菜单中的“打印(P)…Ctrl+P”,说明“P”键是打印选项的热键,“Ctrl+P”则是打印选项的快捷键。14.1.3访问键

对于主菜单的各选项,还可以设置一个访问键。所谓访

问键是指由【Alt】键和一个字母键组成的组合键。当用户同时按下这两个键时,就可以快速地打开它们的弹出式子菜单。VFP9.0主菜单各选项名称后的括号内带有下划线的字母,就是该选项的访问键。

例如,对于主菜单选项“文件(F)”,用户既可以单击该选项而弹出它的子菜单,又可以直接按下“Alt+F”键而弹出子

菜单。

注意:VFP9.0汉化版的菜单界面常常和英文菜单界面有所不同14.1.4菜单分组线

和Windows菜单一样,在VFP9.0的子菜单中,常把同一类操作功能的菜单放在一块,为了明确区分两类功能不同的菜单选项,可在它们之间加一条横线,这条线称为菜单的分组线。

另外,如果在某菜单选项之后带有省略号“…”,则表示该项后还有下一级菜单或窗口、对话框;如果某菜单选项以灰色给出,则表示本菜单目前尚未激活。

14.1.5菜单的动作

无论是哪个菜单项,一旦被选中就一定要执行一定的动作。这些动作可以是下面三种情况中的一种:执行一条命令;执行一个过程;激活另一个菜单。14.2VisualFoxPro9.0的系统菜单

14.2.1系统主菜单

VFP的系统主菜单是一个可变化的动态菜单,它随着操作的不同而会有选项的增减,但系统的基本主菜单选项有七个。

打开VFP9.0后主菜单选项的选项标题将显示在屏幕顶部的标题栏之下,供用户选择。而各选项的内部名称,除“帮助”外,都是在该选项标题的英文单词或它们的缩写前加一表示系统主菜单的前缀“_MSM_”组成的。主菜单常用选项标题及选项内部名称如表14.1所示。14.2.2系统弹出式菜单的标题和内部名称

所谓弹出式菜单的标题,是指选定系统主菜单的选项后弹出的子菜单标题,它与系统主菜单选项相同,也具有自己的内部名称。弹出式菜单的内部名称是将主菜单各选项名称的前缀“_MSM_”用“_M”替换而组成的。VFP9.0弹出式菜单的标题及内部名称如表14.2所示。14.2.3弹出式菜单内选项的标题和内部名称

每一个弹出式菜单都有若干个选项,它们也各有自己的标题和内部名称,以便标识和调用。弹出式菜单内选项的内部名称,也是由前缀和选项标题的英文名称(或其缩写)组成的。这里前缀由“_M”加上各弹出式菜单标题英文的前几个字母和“_”组成,例如“_MFI_”。

表14.3给出了各弹出式菜单的选项内部名称前缀。表中同时给出了各弹出式菜单中第一个选项的标题和对应的内部名称,其余各项基本可如法炮制而得出,也可在帮助文件中通过“搜索”选项查阅。14.2.4系统菜单的访问与设置

在应用程序运行期间,是否允许访问VFP9.0的系统主菜单或者重新配置系统主菜单,可以使用“SETSYSMENU”命令来设置。

【命令格式】

SETSYSMENUON|OFF|AUTOMATIC

|TO[MenuList]|TO[MenuTitleList]|TO[DEFAULT]

|SAVE|NOSAVE

【功能】

该命令用于在程序执行期间打开或关闭VFP系统主菜单,并且允许重新配置它。

【参数及子句说明】

● ON:在程序运行期间,当VFP正在等待输入一个键盘命令(例如BROWSE、READ、MODIFYCOMMAND等)时,允许使用VFP主菜单条。

● OFF:在程序运行期间不允许使用VFP主菜单条。注意,OFF参数必须在程序(.prg)代码中被执行,方可起作用。例如,当在程序中运行下面的代码时,将会使VFP的主菜单条变为非激活状态。

SETSYSMENUOFF

WAIT● AUTOMATIC:在程序运行期间,使得VFP主菜单条可见。主菜单条可访问而菜单项是否激活则与当前的命令有关。这是缺省设置。

● TO[MenuList]|TO[MenuTitleList]:指定菜单项或VFP9.0主菜单条的标题。菜单或菜单标题列表可以包含任何由逗号分隔开来的菜单或菜单标题的组合。菜单的内部名称和菜单标题在系统菜单名称表中列出。例如,下面的命令可以把除文件和窗口菜单外的其它各VFP主菜单项移去。

SETSYSMENUTO_MFILE,_MWINDOW● TODEFAULT:恢复主菜单条为缺省配置。如果用户已经改变了主菜单条或它的菜单项,使用SETSYSYMENUTODEFAULT可以重新恢复它。

● SAVE:将当前的菜单配置设置为缺省配置。如果在SETSYSMENUSAVE命令之后用户再次修改了菜单系统,则可以利用SETSYSMENUTODEFAULT命令来恢复先前的配置。

● NOSAVE:重置菜单系统为缺省的VFP系统菜单。但是,缺省的VFP菜单并不显示,直到使用SETSYSMENUTODEFAULT命令之前。

注意,不带辅助参数的SETSYSMENUTO命令将使得VFP主菜单条被屏蔽。由此可见,菜单的设计是一个非常复杂的过程,在程序方式下设计菜单将是一个非常麻烦的事情。不但要设计条菜单,还要设计弹出式菜单;不但要设计菜单及选项的标题,还要设计它们的内部名称及编号;不但要设计热键访问键及快捷键,还要设计它们的位置,等等。要做的工作太多,对于缺乏经验的用户而言可以说是几乎不可能的事情。正是基于这一点,VFP9.0将菜单的设计交给了菜单设计器来完成,用户只要根据事先设计好的菜单隶属关系将它们各自的标题填入设计器的有关栏目中,然后再运行菜单生成程序,即可获得菜单程序。因此,对于菜单分为菜单文件和菜单程序,菜单文件的扩展名是“.mnx”,它的备注文件的扩展名是“.mnt”。由菜单文件而生成的菜单程序的扩展名是“.mpr”,编译后的菜单程序的扩展名是“.mpx”。

14.3设计自定义菜单

14.3.1菜单设计器的打开

菜单设计器的打开方法同于其它设计器的打开方法,分为使用菜单交互式打开和命令打开两种。使用菜单设计器设计的菜单,首先进行的是菜单文件“.mnx”的设计,然后再生成菜单程序“mpr”。

1.使用VFP菜单打开菜单设计器

使用菜单交互式打开菜单设计器有三种方法,与其它设计器的打开步骤均相同。

方法1:通过文件菜单的“新建”选项进行。方法2:通过工具栏的新建按钮进行。

方法3:通过项目管理器“其它”选项卡中的“菜单”选项

进行。

2.使用命令打开菜单设计器

使用命令打开菜单设计器,有创建菜单命令和修改菜单命令之分。

1)创建菜单命令

【命令格式】

CREATEMENU[FileName|?][NOWAIT][SAVE]

[WINDOWWindowName1][IN[WINDOW]WindowName2|INSCREEN

【功能】

该命令用于打开菜单设计器,创建新菜单。

【参数及子句说明】

● FileName:要创建的菜单的文件名,缺省扩展名为“.mnx”。

● SAVE:其它窗口被激活后,允许菜单设计器仍然处于打开状态。如果无SAVE,则其它窗口被激活后菜单设计器被关闭。SAVE在命令窗口中不起作用。

● WINDOWWindowName1:指定一个窗口特性,该窗口的特性菜单设计器可继承。例如,如果用一个带有FLOAT选项的DEFINEWINDOW命令生成一个窗口,则菜单设计器可以移动。该窗口不需要激活或可见,但必须事先定义好。菜单设计器的缺省大小可以比它所继承特性的窗口大。此时,菜单设计器一直呈现该窗口的特性。菜单设计器的左上角和窗口的左上角坐标相同,而窗口的边界则可扩展。● IN[WINDOW]WindowName2:指定在一个父窗口中打开菜单设计器。菜单设计器不能呈现父窗口的特性,也不能移到父窗口的外边。如果父窗口移动,则菜单设计器跟着移动。为了访问菜单设计器,父窗口必须首先使用DEFINEWINDOW命令进行定义,并且必须是可见的。

● INSCREEN:指定在菜单设计器已经放置到了一个父窗口后,在VFP主窗口中将其打开。菜单设计器通过子句INWINDOW被放置到父窗口中。

● 不含任何参数的CREATEMENU命令可以打开一个菜单设计器,在它里面用户能够定义一个菜单系统。例如,打开菜单设计器,设计一个菜单文件“mymenu.mnx”,可使用命令:

CREATEMENUmymenu

2)修改菜单命令

通过修改已有的菜单命令,也可以打开菜单设计器,其命令是:

MODIFYMENUMenuName

14.3.2菜单设计器

菜单设计器由“菜单名称”、“结果”、“选项”三个选项卡,“菜单级”列表框,“菜单项”按钮组等组成,如图14.2所示。图14.2菜单设计器窗口

1.“菜单名称”选项卡

“菜单名称”选项卡用来输入菜单项的标题和访问键,对于子菜单还允许加入分组线。

注意:有的汉化版本将选项“菜单名称”翻译为“提示”,其实本选项卡的英文名称为“Prompt”,无非前者是引深的意译,而后者是字面的意译罢了。

2.“结果”选项卡

“结果”选项卡是一个列表框,当用户输入了菜单标题后,该列表框会变为可见。它有“命令”、“填充名称”、“子菜单”和“过程”四个选项。

●命令:如果选择该选项,则允许用户在“结果”选项后面弹出的文本框中输入一条要执行的VFP命令。●填充名称:供用户定义第一级菜单的菜单标题或子菜单的菜单序号,VFP9.0将通过它来引用这个菜单项。实际上系统会自动设定菜单标题或菜单序号,但系统所起的名称并不易记忆,不便于在编写菜单程序时使用。用户选择此项,可在“结果”后面弹出的“选项”文本框中输入一个自己的菜单选项名称。除非对VFP非常熟悉的人,一般不选用本项。

●子菜单:表示该菜单选项包含有子菜单,该选项为缺省选项。选择该项后,将在“结果”选项的右侧弹出【创建】按钮,单击之,可以调出新的菜单设计器供设计下一级菜单。当设计结束返回上级菜单设计器时,【创建】按钮将变为【编辑】按钮。

●过程:表示这里是一个VFP过程程序。选择该项后,将在“结果”选项之后弹出一个过程编辑窗口,供用户输入过程程序。但在这里编写过程程序时,并不需要以“Procedure”或“Function”语句开头,也不需要以“EndProc”或“EndFunc”语句结尾。

注意:用户在此最好仅选“命令”、“子菜单”、“过程”中的一个,而不要选“填充名称”。

3.“选项”选项卡

单击“选项”选项卡,会弹出如图14.3所示的“提示选项”对话框。该对话框用来设置菜单选项的各种高级属性,例如快捷方式、启动和废止菜单项、显示状态栏信息等。图14.3“提示选项”对话框

1)定义快捷方式

“快捷方式”由“键标签”和“键说明”两个文本框组成。要定义快捷键,只要在“键标签”文本框,按下Ctrl+快捷字母即可。例如按下Ctrl+Q,将在两个文本框中同时出现“Ctrl+Q”的快捷键标识。如果希望在应用程序中显示其它的内容,则可在“键说明”文本框更改其中的内容。例如将其改为“^Q”。若果要取消所定义的快捷键,则应在“键标签”文本框按空格键。

2)启用和废止菜单项

启用菜单项指该菜单项被激活,变为深颜色,使之可用。废止菜单项则正好相反。设置和废止菜单或菜单项的步骤如下:

S1:打开“表达式生成器”。在“跳过”文本框右侧→【…】↓表达式生成器。

S2:输入跳过表达式。这是一个逻辑表达式,表在菜单运行时,如果该表达式条件满足(为.T.),则该菜单项被废止。

例如,输入表达式:

姓名=“王”or姓名=“李”

表示凡遇见姓“王”或姓“李”的人则此菜单选项变为灰色而不可用。

3)显示状态栏信息

“信息”文本框的作用是:设置菜单或菜单项较详细的说明信息,当鼠标移动到该菜单选项上时,该信息将在状态栏中出现。

4.“菜单级”列表框

该列表框用于在主菜单(菜单栏)、子菜单间的相互切换。

5.“插入”按钮

该按钮用于在当前菜单行前插入一个新的菜单行。

6.“插入栏”按钮

该按钮用于在当前菜单行前插入一个系统已经定义好的菜单项。单击之,会弹出如图14.4所示的“插入系统菜单栏”对话框,用户可在其中选择一个VFP菜单项,然后插入。图14.4“插入系统菜单栏”对话框

7.“删除”按钮

该按钮用于删除当前菜单行。

8.“移菜单项”按钮

该按钮用于将当前菜单行移动到一个新的位置。单击之,会弹出如图14.5所示的“移菜单项”对话框,供用户在“移动位置”列表框中为当前菜单选项选择一个合适的位置。

9.“预览”按钮

该按钮供用户观察设计效果,但并不生成菜单程序文件 .mpr。图14.5“移菜单项”对话框14.3.3使用菜单设计器创建下拉式菜单

创建下拉式菜单一般需按如下步骤进行:

S1:规划与设计菜单系统。本步要确定需要哪些菜单,这些菜单出现在菜单界面的何处,哪些菜单需要子菜单等。

S2:创建主菜单和子菜单。本步使用菜单设计器定义菜单标题、菜单选项和子菜单。

S3:为菜单系统指定任务。本步根据实际要求,确定三大动作之一为菜单选项的任务,如果是过程,应编写过程代码。

S4:生成菜单程序。本步将用户用菜单设计器设计的扩展名为“.mnx”的菜单(菜单备注文件的扩展名为“.mnt”)文件通过系统菜单“菜单”选项的“生成…”选项,生成扩展名为“.mpr”的菜单程序文件。

S5:运行并调试、测试菜单功能。

下面通过一个实例讲述使用菜单设计器创建下拉式菜单的过程。

例14.1

设项目“xsdagl.pjx”中有一个表:

kscj.dbf(学号C(4),性别C(2),姓名C(8),语文I,数学I,英语I,总分I )

建立如图14.6所示的菜单“menu2.mnx”。图14.6菜单样式其操作步骤如下:

S1:规划与设计菜单。

规化与设计的菜单如图14.6所示,这是在纸上画出的一个草图。从草图中看出,第1行是主菜单,下面有二级、三级菜单,主菜单选项带有访问键,子菜单选项带有热键和快捷键。下面将根据此规划图通过菜单设计器来具体设计菜单。

S2:MODIFYPROJECTxsdagl

S3:CREATEMENUmenu2

S4:定义主菜单选项。

S4-1:单击“菜单名称”选项卡,在其中分别输入“成绩处理(\<p)”、“成绩查询(\<s)”、“系统管理(\<m)”,其中的“(\<P)”、“(\<s)”、“(\<m)”用来定义主菜单选项的访问键。

S4-2:为主菜单指定任务。单击“结果”选项卡,在其中分别选择“子菜单”。主菜单栏创建完成,结果如图14.7所示。图14.7定义主菜单各选项

S5:定义各子菜单。主菜单定义后应开始子菜单的定义,子菜单的定义方法与主菜单的定义方法类似。用户选中某个主菜单选项,当其后的“结果”选项卡中出现“子菜单”及【创建】按钮后,单击【创建】即可进入二级菜单创建界面,开始子菜单的设计。现以定义子菜单“成绩处理”为例讲解。

S5-1:→“成绩处理(\<p)”→【创建】↓菜单设计器。

S5-2:定义子菜单选项。定义子菜单选项和定义主菜单选项的方法相同,首先分别在“菜单名称”列输入“编辑表(\<e)”、“\-”、“汇总成绩(\<t)”、“建立索引(<i)”(其中“(\<e)”、“\-”、“(\<t)”、“(\<i)”分别用来设置热键和分割线)然后在“结果”列分别为它们指定任务为“子菜单”、“子菜单”、“过程”、“子菜单”,结果如图14.8所示。图14.8定义子菜单“成绩处理”注意:“(\<字母)”在主菜单中用来设置访问键,在子菜单中用来设置热键;“\-”用来设计分组线。

S5-3:定义快捷键(以定义“编辑表”选项的快捷键Ctrl+E为例)。

●打开“提示选项”对话框。→“编辑表”→【选项】↓

提示选项。

●定义快捷键。在“键标签”文本框中按下组合键“Ctrl+E”。

●返回“菜单设计器”。→【确定】←菜单设计器。此时“选项”按钮上将出现“√”,表示“提示选项”框的各项选项设置完成,本例中则表示“编辑表”选项的快捷键设置完成。

S5-4:重复S5-3,完成其它两个选项的快捷键设置

S5-5:重复S5-1~S5-4,完成其它两个子菜单的设置。

S5-6:为“成绩汇总”选项创建过程程序。

●打开过程编辑框。→“成绩汇总”→结果【

】→“过程”→【创建】↓过程编辑框。

●写入过程程序:

UPDATEkscjSET总分=语文+数学+英语

SELECT*FROMkscj

●→【×】←菜单设计器。此时原【创建】按钮已变为【编辑】按钮,它将用于修改已有的过程。

S5-7:为“建立索引”选项定义下级子菜单选项“按姓名索引”和“按总分索引”,分别设置它们的“结果”列为“命令”,创建命令分别为:

INDEXON姓名toxm

INDEXON总分tozf

S5-8:重复S5-1~S5-7,定义“成绩查询”和“系统管理”子菜单。

S6:为“成绩查询”各选项指定任务。

S6-1:“按性别查询”过程代码为:

CLEAR

ACCEPT“请输入要查询的学生的性别:”toxb

SELECT*FROMkscjWHEREalltrim(性别)=alltrim(xb)

S6-2:“按学号查询”过程代码为:

CLEAR

ACCEPT“请输入要查询的学生的学号:”toxh

SELECT*FROMkscjWHEREalltrim(学号)=alltrim(xh)

S6-3:“按姓名查询”过程代码为:

CLEAR

ACCEPT“请输入要查询的学生的姓名:”toxm

SELECT*FROMkscjWHEREalltrim(姓名)=alltrim(xm)

S6-4:“查总分前3名”过程代码为:

CLEAR

SELECTTOP3*FROMkscjORDERBY总分DESC

S6-5:“查单科不及格者”过程代码为:

CLEAR

ACCEPT“请输入课程名:”tokcm

SELECT学号,姓名,&kcmFROMkscjWHERE&kcm<60

最终设计的“成绩查询”子菜单如图14.9所示。图14.9子菜单“成绩查询”及选项“按性别查询”的过程程序

S7:为“系统管理”各选项指定任务。

S7-1:“退出”选项过程代码为:

CLEAR

SETSYSMENUtoDEFAULT

RETURN

S7-2:“备份数据”选项过程代码为:

CLEAR

CLOSEdatabases

COPYFILEkscj.*tod:\kscj.*

S8:预览设计结果。在设计菜单过程中,用户可随时点击菜单设计器上的“预览”按钮,查看菜单的层次关系是否清楚,子菜单弹出是否正确等。图14.10给出了menu2.mpr的预览结果之一。在主菜单中有三项菜单选项,单击“成绩处理”(或Alt+P)会弹出“成绩处理”子菜单,单击建立索引(或Ctrl+i,或单击“i”键)会弹出“建立索引”的二级菜单选项。图14.10菜单menu2.mpr预览结果之一

S9:生成菜单程序“menu2.mpr”文件。在系统菜单栏中→“菜单”→“生成(G)…”,将生成菜单程序文件“menu2.mpr”。此时如使用程序文件编辑命令:

MODIFYCOMMANDmenu2.mpr

会发现所得到的菜单程序非常长。图14.11仅给出其中的一小部分程序清单。图14.11菜单程序menu2.mpr的部分源代码14.4运行菜单

运行菜单的方法有两种,即菜单法和命令法。

1.使用菜单法运行菜单程序

使用菜单法运行菜单程序有两种方法:

(1)在项目管理器中运行。→“其它”→“菜单”→菜单文件名→【运行】。

(2)通过主菜单运行。→“程序”→“运行”↓运行→菜单文件名→【运行】。

2.使用命令法运行菜单程序

运行菜单程序的命令为:

DOMenuFileName.mpr14.5快捷菜单

快捷菜单一般从属于某个对象,当用鼠标右击该对象时,就会弹出快捷菜单。它的设计方法与下拉菜单的设计方法相同。

S1:打开快捷菜单设计器。→→“菜单”→【新建文件】→【快捷菜单】↓快捷菜单设计器。

S2:添加菜单项,并指定任务。

S3:保存菜单,生成 .mpr菜单程序文件。

S4:在命令窗口中运行:

ONKeyLabelRightMouseDOMenuFileName.mpr

例14.2

创建如图14.12所示的快捷菜单。图14.12快捷菜单ShortcutMenu.mpr

S1:制作快捷菜单。打开快捷菜单设计器,在“菜单名称”列输入两个菜单项,标题分别是“现在是:”和“离08年北京奥运会开幕还有:”。

S2:为各菜单项指定任务。指定“结果”列为“过程”,给每项过程按表14.4所给出的过程代码编写过程程序。

S3:生成菜单程序文件“ShortcutMenu.mpr”。

S4:设计表单“showform.scx”,它有两个标签控件“Label1”和“Label2”,属性根据情况设置。此处将它们的主要属性设置为:

AutoSize=.T.

caption=""

BackStyle=0

S5:创建一个标题为“快捷菜单实例演示”的表单“showcutmenu.scx”。

S6:为表单Init事件编写如下代码:

PARAMETERSc,t

SETDATELONG

thisform.label1.Caption=c

thisform.label2.left=thisform.width/2

IFALLTRIM(c)="现在是:"

thisform.label2.Caption=TTOC(t)

else

thisform.label2.Caption=ALLTRIM(str(&t))+"天"

endif

S6:保存表单。

S7:在命令窗口中执行快捷菜单的运行命令:

ONKEYLabelRightMouseDOshortcutmenu.mpr

只要在屏幕的任何地方右击鼠标,就可弹出如图14.12所示的快捷菜单。单击“现在是:”,将得到图14.13上的显示结果;单击“离08年北京奥运会还有:”,又会得到图14.13下的显示结果。图14.13快捷菜单运行结果14.6为顶层表单添加下拉式菜单

第11章中曾讲过顶层表单的概念。所谓顶层表单指没有父表单的独立表单。它与其它的Windows应用程序同级,可出现在其前台或后台,并且显示在Windows任务栏中。顶层表单用来创建SDI应用程序,或用作MDI应用程序中其它子表单的父表单。下面以实例讲解向顶层表单中添加下拉式菜单的步骤。

例14.3

将例14.1所创建的下拉式菜单Menu2复制成Menu3,然后将Menu3添加到顶层表单中。

S1:COPYFILEMune2.*TOMenu3.*

S2:打开菜单设计器。

MODIFYMENUMenu3

S3:→“显示”→“常规选项”↓常规选项→“顶层表单”。

S4:将菜单重新生成为“Menu3.mpr”。

S5:设计一个新表单“TopForm.Scx”,将表单的“ShowWindow”属性设为“2-作为顶层表单”,Caption属性设为“在顶层表单中添加菜单演示”。

S6:在表单TopForm.scx的Init事件中,添加调用菜单程序的命令:

DOMenuName.mprWITHThis[,cMenuName]

其中,This表示本表单,cMenuName可为被添加的下拉菜单的条菜单指定一个内部名称。本例中使用的具体命令如下:

DOMenu3.mprWITHThis,“MyMenu”

S7:在表单TopForm的Destroy事件中,添加清除菜单的命令:

RELEASEMENUcMenuName[EXTENDED]

其中,EXTENDED表示连同子菜单一起清除掉。本例中,具体使用:

RELEASEMENUMyMenu

EXTENDED

至此,为顶层表单添加下拉式菜单的工作已全部完成。

S8:运行表单TopForm,就会得到添加了菜单的顶层表单,如图14.14所示。图14.14顶层表单添加菜单运行结果

练习十四

一、选择题

1. VFP9.0支持的菜单类型有()。

A)亮条菜单 B)普通菜单

C)顶层菜单

D)条菜单、弹出式菜单、下拉式菜单

2.下拉式菜单是()的组合菜单。

A)亮条菜单和普通菜单

B)条菜单和弹出式菜弹

C)条菜弹和快捷菜单

D)亮条菜单和快捷菜单

3.主菜单选项后面圆括号内带有下划线的字母是该菜单项的()。

A)访问键 B)热键

C)快捷键 D)分组线

4.子菜单选项后面圆括号内带有下划线的字母是该菜单项的()。

A)访问键 B)热键

C)快捷键 D)分组线

5.子菜单选项后面的“Ctl+字母”是该菜单项的()。

A)访问键 B)热键

C)快捷键 D)分组线

6.子菜单选项快捷键由()与一个特定意义的字符组成。

A) Alt

B) Ctrl

C) >\

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论