admin管理员组

文章数量:1531792

2024年3月20日发(作者:)

电脑编程技巧与维护 

在应用系统中实现可自动隐藏的菜单 

王守银 

(武警指挥学院,天津300250) 

摘要:采取常规的VFP菜单设计器进行设计,菜单的显示效果就是只要鼠标进行点击就会全部展开,当菜单项特 

别多时,显示效果就特别差,必须自动隐藏部分不常用的菜单,提出了应用系统中实现自动隐藏菜单的方法。 

关键词:应用系统;自动隐藏;菜单 

Realization of Autohide Menu in Application System 

WANG Shouyin 

(Armed Pofice Command College,Tianjin 300250) 

Abstract:Menu designed by the conventional VFP menu designer has a characteristic that when user click it with mouse 

the items of the menu will display entirely.This display method is very inconvenient when the number of the menu items is 

very large,therefore it is necessary to autohide some seldom used menu items in this case.The paper proposed a method for 

Realization auto hide menu in application system. 

Key words:application system;autohide;menu 

使用VFP进行编程时,程序的菜单一般来说都是通过菜 

单设计器设计完成,完成设计后在系统运行状态下菜单不能 

“显示”一“常规选项”,在常规选项对话框中,将“顶层表 

单”复选框选中,表示此菜单将应用于顶层表单中。 

进行修改,并且打开菜单时,所有菜单项都是可见的。当前 

许多优秀的系统软件设计的菜单都是这样的功能,在显示菜 

单时,一般只显示经常进行操作的菜单项,而把大多数的菜 

单项进行隐藏,当需要使用被隐藏的菜单项时,只需要单击 

菜单项中向下的剪头即可展开全部菜单项,使用起来非常方 

便。那么在VFP编写的应用程序中如何来实现这样的功能呢? 

其实,在VFP8.0以后的版本中,提供了一种菜单技术MRU 

(Most Recently Used),即只显示最近使用的菜单,而隐藏那些 

不经常使用的菜单项。因此,VFP在菜单定义命令中添加了 

个MRU参数,只需要在定义的菜单项后面加上MRU参数, 

即可将该菜单项设置为隐藏菜单项,用户只需要移到或单击 

向下的箭头就可以展开或隐藏该菜单项。 

1 实现过程 

利用菜单设计器创建一个新菜单,设计结果如图1所示。 

图2 

选中“常规选项”对话框中的“清理”复选框,在弹出 

的代码编辑器中输入如下执行过程函数: 

&&下面程序在鼠标移到隐藏菜单对应位置时,可以展开 

&&显示隐藏的菜单 

PR0CEDURE report

mru 

_

L0CAL MENUNAME 

_

NAME=”数据管理F” 

&&对应POPUP菜单的名称 

MENU

_

图1 

RELEASE BAR ALL OF(MENU_NAME) 

在设计“数据管理”菜单项最后一项中,将菜单名称设 

置为空,将结果设置为过程,以便自己添加过程函数。再单 

击“选项”按钮,在弹出的对话框中,将“跳过”条件设置 

为“.F.MRU”,如图2所示。 

&&释放所有菜单项内容,重新生成菜单项 

DEFINE BAR l OF(ENU_NAME)PROMPT”数据 M

录入 N)”INVERT 

DEFINE BAR 2 OF(ENMU 

收稿日期:2012—02—16 

”数据 

在保持“菜单设计器”打开的情况下,选择系统菜单 

S0F’唧ARE DEVEL0PMENT AND DESIGN 

查询 C)” 

DEFINEBAR 3 0F 

(MENU_NAME)PROMPT”打印 

表格 P)” 

D脚NE BAR 5 OF 

(MENU_NAME)PROMPT”数据 

备份(\<B)”Ⅱ ERT 

DEFINE BAR 6 OF 

(MENU_NAME)PROMPT”数据 

恢复 H)” 

DEF E BAR 7 0F 

(MENU_NAME)PROMPT”数据 

导入(\<I)”Ⅱ ERT 

DEFD- BAR 8 OF 

(MENU_NAME)PROMPT”数据 

导出(\<E)” VERT 

&&定义当鼠标选中菜单项,系统执行菜单对应的命令 

0N SELECT10N BAR l 0F r M匝NU

NAME)do 

RunReport 

0N S眦CT10N BAR 2 OF (M匣NU NAM_E)do 

RunReport 

0N SELECTION BAR 3 OF f~匝NU

_

NAME)do 

RunReport 

0N SELECT10N BAR 5 OF f NⅡ N NAME1 d0 

RunRepo ̄ 

0N SELECT10N BAR 6 OF (M瞳NU NAME)do 

RunReport 

0N SELECT【0N BAR 7 OF f M匝NU

NAME)do 

RunReport 

0N SELECT10N BAR 8 OF (MENU NAM_E) do 

RunReport 

&&定义一个隐藏菜单项 

D阴NE BAR 9 OF( 匝NU NAME)PR0M盯” ” 

MRU INVERT 

&&执行动作为合并菜单项的过程函数ExpMenu 

0N SELECTIoN BAR 9 OF f M匣NU

NAME)do 

ExpMenu 

&&激活菜单 

RELEASE BAR 

ACTIVATE POPUP(MENU 

(MEN.U_NA

E)

BAR

1 

5 OF NAM

匠1

RELEASE 

RELEASE BAR 

BAR 6 

7 OF

OF(

(EM

EMUN

NU

 NAⅧ

. NAⅧ

、 

 

RELEASE BAR 8 OF(EMNU NAME) 

RELEASEBAR 9OF(MENU NAME、 

&&再定义一个展开菜单项 

DEFINE BAR 4 OF(MENU

_

NAME)PR0M ”report 

mru”MRU 

&&执行函数本身 

0N SELECTION BAR 4 OF (MENU NAⅣ匝1 DO 

report_mru 

ENDPR0C 

PROCEDURE ExpMenu&&合并菜单项 

L0CAL lcPadName 

lcPadName=”数据管理F”&&获得POPuP菜单名称 

RELEASE BAR all OF(1cPadName) 

DEFINE BAR 1 OF(1cPadName)PROMPT”数据录 

人n<N)” 

DEF E BAR 2 OF(1cPadName)PROM ”数据查询 

f\<C')|- 

DEFINE BAR 3 OF(1cPadName)PR0MPT”打印表格 

P1” 

DE1 BAR 4 OF(1cPadNarne)PROMPT” ”M_RU 

NVERT 

软件开发与设计 

0N SEI.ECT10N BAR 1 0F(IcPadName)do RunReport 

0N SE]L凰CT10N BAR 2 OF(1c P: Name)do RunReport 

0N SELECT10N BAR 3 0F(IcPadName)do RunRepog 

0N SELECTION BAR 4 OF f lcPadName)do 

report_mru 

ACTⅣATE POPUP(1cPadName)BAR l 

ENDPROC 

&&用户选择菜单项执行的命令 

PR0CEDURE RunRepo ̄ 

L0CAL lcStr 

essAGEB0x(”你选择的菜单项为:”+P0PUP() 

+BAR()) 

ENDPR0C 

将设置好的菜单进行编译后,新建一个表单,将表单的 

ShowWindow属性设置为2—顶层表单,在表单的Init事件中 

写入如下代码: 

D0 MENU 1.MPR WITH THIS..T. 

2程序运行 

按照上述编程设置后,运行这个表单,可以得出当前菜 

单初始状态如图3所示。 

暾 赫露 ~……骜凌强鼍§萎 誊嚣§筵§l鼍g嚣蠹§l 薯 | ||。 | 

数甓最 o i) | 

瓠毫{慊稿 萋|鼍馨萋薯叠薯薯I譬萎警j|薯毫誊叠0 警l毒l 

l 嚣鏊 誊 i j i÷ l|| 

譬 | § § 蠹笺 孽 毒 毒 |鼍l 薯薯 | | j 

i ≯嚣 t *||ll|| 

强《嚣-’“ 叠毪强棼g。棼薯 lⅢ 臻 一u _t|。 :i j | 

图3 

当鼠标放在菜单项最下面时,系统菜单自动变化为如图4 

所示。 

图4 

将鼠标移到最下方,这时菜单又恢复原状。 

3 结语 

设计与实现的对系统菜单的自动隐藏功能使用起来非常 

方便,有兴趣的读者不妨一试。在Windows XP加VFP9.0下 

通过运行。 

本文标签: 菜单菜单项设计系统进行