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
M
E)
BAR
1
5 OF NAM
匠1
RELEASE
RELEASE BAR
BAR 6
7 OF
OF(
(EM
EMUN
NU
NAⅧ
. NAⅧ
1
、
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下
通过运行。
版权声明:本文标题:在应用系统中实现可自动隐藏的菜单 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1710918431a290383.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论