资源描述
第9章菜单设计及应用(3学时),9.1.1菜单结构,VFP的系统菜单是一种下拉式菜单,由一个条形菜单和一组弹出式菜单组成。,条形菜单(主菜单),弹出式菜单(子菜单),每个菜单项都有名称(菜单项标题),供用户识别。每个菜单项都有内部名(引用名),由系统识别,可以在程序代码中引用。,9.1.1菜单结构,菜单项,_Msm_File,_Msm_Edit,_Msm_View,_Msm_Tools,_Msm_Prog,_Msm_Windo,_Msm_Systm,每个菜单项对应一个弹出式菜单,弹出式菜单也有内部名。,9.1.1菜单结构,某些菜单项有快捷方式键,通常是Ctrl与一个字母的组合。,某些菜单项有热键,按Alt与该字符的组合可以访问菜单项。,每个菜单项都有一定的动作,可能是弹出下级菜单、执行一条命令或执行一个过程。,9.2菜单应用示例,VFP可以设计快捷菜单和下拉式菜单。,快捷菜单从属于某个对象,列出了有关对象的常用操作。,下拉式菜单是程序设计人员组织和构造应用程序的有效工具,将各类分散的对象有效组织起来,共同构成一个完整的应用程序。,根据菜单的显示位置不同,下拉式菜单分为应用程序菜单和窗口菜单。,应用程序菜单显示在VFP的系统菜单栏位置。,窗口菜单显示在程序的某个顶层表单上端。,9.2.1设计及运行菜单的主要步骤,VFP创建菜单两种方法,一、通过编写程序代码的方法直接设计菜单程序文件(MPR),在VFP中可以直接运行。,二、通过菜单设计器的方法建立菜单设计文件(MNX),在VFP中不能直接运行,需要生成菜单程序文件(MPR)。,9.2.1设计及运行菜单的主要步骤,通过菜单设计器建立菜单步骤,CreateMenu,设计菜单,生成菜单程序,Do.MPR,进入菜单设计器,菜单设计文件(MNX),菜单程序文件(MPR),执行菜单程序,9.2.2菜单样例设计,启动菜单设计器,方法:单击文件菜单新建,选定菜单,单击新建文件菜单按钮。,设计主菜单项,9.2.2菜单样例设计,设计子菜单项,输入完成后,按Ctrl+S键保存菜单设计文件,文件主名为MENU_EXA9。,9.2.2菜单样例设计,生成菜单程序文件,方法:单击菜单菜单生成,在生成菜单对话框中,填写输出文件名。,运行菜单程序,方法:在命令窗口或程序中执行命令DoMENU_EXA9.MPR,9.3.1菜单设计器,方法一:单击文件菜单新建,选定菜单,再单击新建文件按钮。,方法二:单击常用工具栏上的新建,选定菜单,再单击新建文件按钮。,方法三:选择项目管理器的其他选项卡,选定菜单,再单击新建按钮。,系统生成扩展名为MNX和MNT两个菜单设计文件。,方法四:在程序或命令窗口中执行命令,CreateMenu,9.3.2设计菜单项,通过菜单设计器定义菜单,首先定义条形菜单项,再通过创建或编辑按钮,进入当前菜单项的弹出式菜单设计界面。,在弹出式菜单设计界面上,可以从菜单级框中选择菜单栏或弹出式菜单名切换到上级菜单的设计界面。,9.3.2设计菜单项,“菜单名称”列,输入菜单项的名称(菜单标题)。仅用于显示,不作为菜单项的内部名。,访问键(热键),方法:在访问键的字符(字母或数字)前面加上两个字符。,在运行菜单时,按Alt与这个字符的组合可以访问菜单项。,分组线,方法:在输入弹出式菜单项名称时,仅输入两个字符。,作用是分组显示弹出式菜单项。若在条形菜单中加分组线,运行时将产生错误。,9.3.2设计菜单项,“结果”列,结果列定义菜单项所完成的动作类型。,子菜单,表示菜单项包含一个弹出式(子)菜单。,命令,表示菜单项功能由一条命令完成。,过程,表示菜单项功能由一段程序代码完成。,9.3.2设计菜单项,填充名称,设计主菜单项时,结果列中有填充名称选项,填写要引用的主菜单项内部名。,菜单项#,设计弹出式(子)菜单项时,则结果列中有菜单项#选项,填写要引用的系统子菜单项内部名,或另一个子菜单项的自定义编号(数字串)。,9.3.2设计菜单项,“选项”列,用于定义菜单项的相关属性。一旦定义过属性,按钮上就会出现符号。,快捷方式,指定菜单项的快捷方式键,通常由Ctrl或Alt与一个字母组合而成。,跳过,定义菜单项是否可用的条件,输入逻辑值表达式。,使键标签右侧文本框获得焦点,在键盘上按下要设的快捷方式键。按空格键将取消已定义的快捷方式键。,若表达式的值为.T.,则菜单项不可用(灰色表示);若表达式的值为.F.,则菜单项可用;若没写表达式,则系统默认(.F.)可用。,9.3.2设计菜单项,信息,定义菜单项说明信息,在信息文本框中输入字符表达式。,主菜单名,用于定义主菜单项的内部名,供其他结果列为填充名称的菜单项引用。,菜单项#,用于定义子菜单项的内部编号(数字串),供其他结果列为菜单项#的菜单项引用。,在菜单程序运行过程中,当鼠标指向菜单项时,在状态栏中将显示该表达式的值。,9.3.2设计菜单项,其他操作,插入菜单项,插入栏,删除菜单项,调整菜单项顺序,单击插入按钮,在当前菜单项前插入新菜单项。,在弹出式(子)菜单设计界面中,单击插入栏按钮,打开插入系统菜单栏对话框,选定所需要的菜单项,再单击插入按钮,在当前菜单项之前插入系统的菜单项。,单击删除按钮,删除当前菜单项。,拖动菜单名称(标题)左侧的移动按钮,可以改变菜单项的顺序。,9.3.3保存菜单设计文件,方法一:单击文件菜单保存。,方法二:单击常用工具栏上的保存按钮。,方法三:按Ctrl+W或Ctrl+S键。,9.3.4打开菜单设计文件,方法一:单击文件菜单打开,在打开文件对话框中选择文件类型为菜单,选择或输入菜单设计文件名,单击确定按钮。,方法二:单击常用工具栏上的打开,其余同上。,方法三:在项目管理器的其他选项卡,选定菜单设计文件名,单击修改按钮。,方法四:在程序或命令窗口中执行命令,ModifyMenu,9.3.5生成菜单程序文件,方法一:在菜单设计器中,单击菜单菜单生成,在生成菜单对话框中,填写输出文件名。,方法二:在项目管理器的其他选项卡中,选定菜单设计文件名,单击运行按钮。,菜单设计文件(MNX)用于保存设计菜单的各项定义信息,不能运行,必须经过系统生成菜单程序文件(MPR)后才能运行。每次修改菜单设计文件后都要重新生成菜单程序文件。,9.3.6运行应用程序的菜单程序,方法一:单击程序菜单运行,在运行对话框中选择文件类型为程序,并选择或输入菜单程序文件名(MPR),再单击运行按钮。,方法二:在程序或命令窗口中执行命令,Do.MPR,在命令中菜单程序文件名的扩展名(MPR)不能省略。执行此命令后,在VFP系统菜单中显示应用程序菜单。,9.4.5弹出式菜单名,可以重新自定义弹出式菜单的内部名。,方法:进入要命名的弹出式菜单(子菜单)界面,单击显示菜单菜单选项,进入菜单选项对话框,在名称框内定义弹出式菜单的内部名。,设置应用程序菜单与VFP系统菜单的相对位置。,方法:单击显示菜单常规选项,在常规选项对话框的位置选项中,选定位置关系。,替换,9.5.1应用程序菜单与系统菜单,追加,在.之前,在.之后,仅显示应用程序菜单和与当前窗口有关的系统菜单项。,将应用程序菜单添加到系统菜单之后。,将应用程序菜单插入到系统菜单中指定的菜单项之前。,将应用程序菜单插入到系统菜单中指定的菜单项之后。,设计顶层表单,方法:设计表单时,将其ShowWindow属性的值设为2(作为顶层表单)。,9.5.2设计窗口菜单,设计窗口菜单,方法:在设计窗口菜单时,需要选定常规选项对话框中的顶层表单复选框。,9.5.2设计窗口菜单,运行窗口菜单程序,命令:DoWith,”,9.5.2设计窗口菜单,说明:扩展名MPR不能省略。表单引用名指出要显示窗口菜单的顶层表单名,在表单的事件(Load或Init)下运行窗口菜单程序时,表单引用名可以是This或ThisForm。,命令:ReleaseMenusExtended,9.5.3释放菜单程序,可以同时从内存中释放多个条形菜单。如果不指定菜单内部名,则释放全部自定义的条形菜单。,释放条形菜单,加Extended短语,在释放条形菜单的同时释放其弹出式菜单;不加Extended短语,则需要单独释放弹出式菜单。,命令:ReleasePopups,释放弹出式菜单,可以同时从内存中释放多个弹出式菜单。如果不指定弹出式菜单名,则释放所有自定义的弹出式菜单。,程序运行过程中,鼠标右击对象时弹出的菜单是快捷菜单。快捷菜单是由一组弹出式菜单组成,或者由一系列上下级关联的弹出式菜单组成。,9.6快捷菜单设计与应用,与下拉式菜单相比,快捷菜单只有弹出式菜单,没有条形菜单。,快捷菜单的特点,快捷菜单一般从属于某个对象,通常只列出与对象有关的操作。,设计快捷菜单,快捷菜单从属于表单或其中某个对象,要在相关对象的RightClick事件中编写运行快捷菜单程序文件的代码。命令:Do.mpr,运行快捷菜单,9.6快捷菜单设计与应用,方法:单击文件菜单新建,选定菜单,单击新建文件快捷菜单按钮。,释放快捷菜单,将此语句写在表单的Destroy事件中,或者,作为“清理”菜单代码中的语句。,9.6快捷菜单设计与应用,命令:ReleasePopups,本章结束谢谢!,
展开阅读全文