《VFP第9章++菜单设计》由会员分享,可在线阅读,更多相关《VFP第9章++菜单设计(40页珍藏版)》请在金锄头文库上搜索。
1、第9章 程序菜单设计及应用(3学时),,吉林大学计算机教学与研究中心,Welcome !,常见的菜单:下拉式菜单和快捷菜单,一个应用程序通常采用下拉式菜单的形式列出其功能,供用户使用。,快捷菜单一般从属于某个对象,列出有关对象的常用操作。也称右击菜单。,9.1 设置VFP系统菜单,菜单结构,典型的菜单系统是下拉式菜单,它由一个条形菜单和一组弹出式菜单组成。,条形菜单是主菜单,而弹出式菜单作为子菜单。当单击条形菜单的一个菜单项时,激活其相应的弹出式菜单。,9.1 设置VFP系统菜单,每个条形菜单都有内部名和一组菜单项。,如文件菜单的内部名为_Msm_File, 编辑菜单的内部名为_Msm_Edi
2、t。,每个弹出式菜单也有各自的内部名。,如文件的弹出式菜单内部名为_Mfile, 编辑的弹出式菜单内部名为_Medit。,菜单结构,每个菜单项也有内部名,内部名是供系统识别,可以在编程代码中引用。,如文件菜单中打开菜单项内部名_Mfi_Open,可以为每个菜单项设置快捷键,快捷键通常是Ctrl键与一个字符键的组合。,每个菜单都有一定的动作,动作可能是弹出子菜单、执行一条命令或一个过程。,菜单结构,9.1.2 设置系统菜单,VFP系统菜单条形菜单内部名 _Msysmenu,命令说明:用于设置VFP主菜单栏中显示的系统菜单项。,命令格式:Set Sysmenu To | Default ,弹出式菜
3、单内部名表:通过弹出式菜单内部名指定要显示的条形菜单项。,条形菜单项内部名表:通过条形菜单项内部名指定要显示的条形菜单项。,1.设置条形菜单项,Default:将系统菜单恢复到默认配置。,命令格式:Set Sysmenu To | Default,不带参数的Set Sysmenu To,仅显示与目前操作有关的菜单项。,例题,1.设置条形菜单项,命令说明:用于指定系统菜单的默认配置。,命令格式:Set Sysmenu Save | Nosave,Save:指定当前系统菜单为默认配置。,Nosave:指定VFP系统菜单的最初配置为默认配置。,2. 指定系统菜单的默认配置,例题,命令说明:用于设置程
4、序中执行到具有交互性命令时是否显示系统菜单项。,命令格式: Set Sysmenu On| Off,On:程序中执行交互命令时显示系统菜单。,Off:程序中执行交互命令时不显示系统菜单。,3. 设置是否显示系统菜单项,例题,常用交互性命令:Wait、Browse、Edit等。,程序效果,创建菜单主要工作在菜单设计器中完成 。,菜单设计的基本步骤,9.2 菜单应用示例设计,打开菜单设计器,设计菜单,生成菜单程序,执行菜单程序,Create Menu,菜单文件(MNX ,MNT),菜单程序文件(MPR),Do .MPR,样例:设计一个简单的管理表文件的菜单。菜单中包括3个主菜单选项:表操作、表输出
5、和退出。表操作的子菜单包含4个选项:打开表、浏览、修改表结构和关闭表。表输出的子菜单包含2个选项:输出表结构和输出表内容。退出是恢复VFP系统菜单。,菜单:是一系列选项,每一个菜单项都有名称,方便用户识别,而当用户选择某一菜单项时将会执行相应操作。,9.2.2 菜单样例,样例,方法:文件菜单新建选择菜单新建文件菜单,1. 启动菜单设计器,2. 设置菜单栏的主菜单项,菜单名称填入表操作、表输出和退出 结果选择子菜单、子菜单和命令命令后文本框中输入Set Sysmenu To Default,菜单样例,3. 设置下拉子菜单,菜单样例,输入完毕,按Ctrl+S保存,文件主名为Menuex1 。,方法
6、: 菜单菜单生成。,4. 生成可执行菜单程序文件。,5. 运行菜单程序,方法:在命令窗口或程序中执行 Do Menuex1.mpr,菜单样例,方法一:文件菜单新建选择菜单新建文件菜单按钮。,启动菜单设计器,方法二:常用工具栏上新建选择菜单新建文件菜单按钮。,方法三:在项目管理器中其他选项卡菜单新建菜单按钮。,9.3 菜单设计与应用,1. 新建菜单,Creat Menu Mymenu,1. 新建菜单,方法四:命令方式。,Create |Modify Menu ,命令说明:执行此命令后,系统生成扩展名为MNX和MNT的菜单文件。,例如:在命令窗口中键入,2. 修改菜单,方法一:文件菜单打开文件类型
7、为菜单(*.MNX)选择菜单文件。,方法二:命令方式。,Modify Menu ,命令说明:系统默认菜单文件名扩展名为MNX。执行该命令时,若菜单文件存在,则打开菜单,否则建立菜单。,9.3.2 定义菜单项,菜单设计器,1. “菜单名称”列,菜单名称列内输入菜单项的名称,也称菜单标题,仅用于显示。,可以设置菜单项的访问键,也称热键。,方法:在访问键的字符前加上。,例如:输入菜单名称为“表(T)”,则可以用Alt键和字母T组合访问该菜单项。,仅输入,产生一条水平分组线。将子菜单的菜单项分组。,2. “结果”列,结果列内选定运行菜单时菜单项所完成的动作类型。,结果列表框有子菜单、命令、过程和填充名
8、称(或菜单项#)4种选项。,子菜单:表示此菜单包含子菜单。,单击创建按钮切换到子菜单界面,用于设计子菜单。,选择菜单级下拉列表框内选项,可返回上级子菜单或主菜单的设计界面。,2. “结果”列,命令:表示此菜单项执行一个命令。,过程:用于输入菜单项要执行程序 。,填充名称或菜单项#:若定义主菜单项,则选项为填充名称;用于填写有效的主菜单项内部名,运行时用当前菜单名称代替原菜单名称显示。 若定义子菜单项,则选项为菜单项#。可在右侧文本框内输入子菜单项的内部名或序号。可指定系统菜单中某个菜单项的内部名。,3. “选项”列,单击选项按钮,弹出提示选项对话框。,3. “选项”列,快捷方式:指定菜单项的快
9、捷按键,通常由Ctrl或Alt键与一个字母组合而成。,方法:单击键标签右侧的文本框,然后在键盘上按下要设的快捷键。对主菜单项同时定义热键和快捷键,仅快捷键有效。,跳过:定义菜单项是否可用。,输入逻辑表达式,若值为.T.,则对应菜单项不可用(灰色表示);若值为.F.,则对应菜单项可用;若没写,则系统默认该菜单项可用。,3. “选项”列,信息:定义菜单项说明信息。在信息文本框输入字符表达式,运行菜单,当鼠标指向菜单项,该表达式的值将显示在VFP状态栏中。,主菜单名或菜单项#:指定主菜单项的内部名字或子菜单项的内部编号。,如果不指定,系统将为主菜单或子菜单项随机地分配一个内部名或序号。具有相同的内部
10、名或内部号的菜单项,具有相同功能(覆盖菜单名称)。,9.3.2 定义菜单项,插入按钮,单击该按钮,在当前菜单项行之前插入一个新的空白菜单项行。,插入栏按钮,单击该按钮,打开插入系统菜单栏对话框,选定所需要的菜单项,再单击插入按钮。则在当前菜单项行之前插入一个标准的VFP系统菜单项。并得到系统子菜单项名称和内部名称。,9.3.2 定义菜单项,删除按钮,单击该按钮,删除当前菜单行。,预览按钮,单击该按钮,预览菜单效果。,移动按钮,每个菜单项左侧都有个移动按钮,拖动可改变菜单项前后顺序。,9.3.3 保存菜单,方法一:文件菜单保存或另存为。,方法二:常用工具栏保存按钮。,方法三:按Ctrl+W或Ct
11、rl+S键。,9.3.4 修改菜单,方法一:文件菜单打开选择文件类型为菜单选择或输入菜单文件名确认。,方法二:打开常用工具选择文件类型为菜单选择或输入菜单文件名确认。,方法三:项目管理器中其他卡选定菜单文件名修改按钮。,方法四:命令方式,格式:Modify Menu ,9.3.5 生成菜单,菜单文件(MNX)用于保存菜单设计的各项定义信息,本身并不能运行,须经过系统生成菜单程序文件(MPR)才能运行。,方法一:在菜单设计器环境下,菜单菜单生成。,方法二:项目管理器中其他卡选定菜单文件名运行按钮,系统先生成菜单程序文件,然后再运行菜单程序文件。,9.3.6 运行菜单程序,方法一:程序菜单运行选择
12、文件类型为程序选择或输入菜单程序文件名(MPR)运行按钮。,方法二:命令方式。,格式: Do ,说明:执行命令时,其中菜单程序文件扩展名(MPR)不能省略。,9.4 菜单位置的设置,在VFP中运行菜单程序文件时,菜单可作为系统菜单的一部分出现在VFP系统菜单的指定位置。,在VFP中运行菜单程序文件时,菜单也可显示在表单中作为应用程序的主菜单。,对于同一个程序菜单来说,其位置只能有一个,不能二者兼得。,设置程序菜单与VFP系统菜单相对位置,方法:在菜单设计器下,显示菜单常规选项进入常规选项对话框 位置选项中,选定当前程序菜单与系统菜单的位置关系。,设置程序菜单与VFP系统菜单相对位置,替换:是V
13、FP系统的默认选项,用程序菜单替换系统菜单,即仅显示程序菜单项和与当前操作有关的VFP系统菜单项。,追加:将程序菜单插入到系统菜单中指定的菜单项之后。,在之前:将程序菜单插入到系统菜单中指定的菜单项之前。在右侧下拉列表框中选择用于定位的VFP系统菜单项。,在之后:将程序菜单添加到系统菜单之后。,9.4.2 设置表单中的程序菜单,要使程序菜单显示在表单中,在设计程序菜单和表单时,必须设置相关属性。,1. 设置菜单,方法:菜单设计器下,单击显示菜单中的常规选项,在常规选项对话框中,选定顶层表单复选框,使当前程序菜单成为表单中调用的菜单。,2. 设置表单与调用菜单,在表单设计器中,将表单的ShowW
14、indow属性的值设为2-作为顶层表单。,在表单的Load、Init事件中调用菜单程序。,格式:Do With ThisForm,”,说明:扩展名MPR不能省略。This表示在当前表单中调用菜单程序。为了在程序中其他位置能引用菜单名,调用菜单程序时要为菜单规定菜单内部名。,2. 设置表单与调用菜单,在表单的Destroy事件中清除菜单。,格式:Release Menu ,说明:从内存中清除菜单,菜单内部名是调用菜单时为菜单所起的名称。,例题:在Mainform表单中调用菜单。,9.5 快捷菜单设计与应用,在程序运行过程中,右击对象弹出的菜单是快捷菜单,也称对象的右击菜单。快捷菜单由一个弹出式菜
15、单组成,或者由一系列有上下级关联的弹出式菜单组成。,快捷菜单的特点,与程序菜单相比,快捷菜单只有弹出式菜单,没有条形菜单。,快捷菜单一般从属于某个对象,通常只列出与对象有关的一些操作命令。,2. 建立快捷菜单,方法:文件菜单新建选择菜单新建文件快捷菜单。,设计快捷菜单的具体方法与设计下拉式菜单相似,快捷菜单文件扩展名及快捷菜单程序文件的生成过程与下拉式菜单都相同。,3. 调用与清除快捷菜单,在对象的RightClick事件中,调用快捷菜单。,格式: Do .MPR,不再需要快捷菜单时应该及时清除菜单,释放其所占用的内存空间。,方法:显示菜单常规选项在常规选项对话框中选定清理复选框在代码编辑窗口中添加清除菜单命令:Release Popups ,9.5.2 快捷菜单的应用例,【 例 】为表单Test.scx中文本框Text1建立一个快捷菜单Kjcd.mnx,其选项有:时间、复制和粘贴,在时间与复制之间有分隔线。点击时间选项,在表单的标题栏显示当前时间;复制和粘贴选项功能与VFP系统菜单的“复制”和“粘贴”菜单项功能一致。,