叶文胜
(黄冈职业技术学院人事处,湖北黄冈438002)
VFP中的菜单既可以直接编写程序代码实现,又可以利用菜单设计器实现。利用菜单设计器设计菜单的步骤如图1所示:
图1 菜单设计步骤
菜单设计器编写的菜单文件(.mnx)经过生成后形成菜单程序文件,程序文件运行后执行菜单的功能。
在设计菜单中,在菜单的“选项”中设计“跳过”的条件。
图2 菜单的选项设置
跳过条件的设计方法:设计一个全局变量,当不同的用户登录时控制此变量的值,然后将此变量设置为菜单的“跳过”条件:当条件值为.t.时菜单跳过,即该菜单功能不可用,反之该菜单功能可用。
下面用一个完整案例说明如何实现用户使用菜单权限的设计。
1.案例描述
(1)设计菜单mymenu,其中有四个菜单项:查询(按姓名查询,按学号查询)、打印(打印课表,打印成绩单)、修改(修改基本信息,修改密码)、帮助(使用帮助、软件升级);(2)设计一顶层表单myform,将菜单加载在表单上;(3)设计一个登录表单userlogin,用于用户输入登录账号和密码;(4)菜单使用权限控制:登录时,当账号为admin,密码为admin,进入myform表单,并且所有菜单功能可用;当账号为111,密码为111,进入myform表单,其中菜单“修改”功能不可用,其余菜单功能可用;输入其余的账号和密码显示“账号和密码错误”提示信息。
2 案例实现
(1)打开菜单设计器,设计好各菜单项及其子菜单,如图3所示:
图3 菜单项的设计
(2)编辑“修改”菜单的选项,在“跳过”框中设置“userflag< >1”,如图4所示:
图4 设置“修改”菜单的跳过条件
(3)保存菜单并生成菜单程序。
(4)设计顶层表单,并加载菜单,运行界面如图5所示:
图5 表单加载菜单效果图
表单Init事件代码如下:
domymenu.mpr with this,.t.
(5)设计登录表单,运行效果如图6所示:
图6 登录表单的效果图
“登录”按钮的Click事件参考代码如下:
useraccount=allt(thisform.text1.value)
userpass=allt(thisform.text2.value)
if useraccount=="admin"and userpass=="admin"
userflag=1
do form myform
thisform.release
else
if useraccount=="111"and userpass=="111"
do form myform
thisform.release
else
messagebox("用户名或密码错误!")
endif
endif
表单的Init事件代码:
public userflag//定义全局变量
userflag=0//设置默认用户为普通用户
(6)测试
分别输入用户名、密码为“111”及“admin”的结果如下:
图7 用户名、密码为“111”的进入界面
图8 用户名、密码为“admin”的进入界面
输入其他的用户名或密码运行界面如下:
图9 输入错误的用户名和密码运行结果
VFP数据库应用系统中用户使用菜单权限的设计方法有很多种,本文中主要利用了菜单设计中菜单项的“跳过”条件设置来控制。不同的用户设置不同的“身份”值,“身份”值不同使得菜单的“跳过”条件结果不一样,从而达到控制菜单项的目的。
[1]熊发涯.Visual FoxPro程序设计[M].北京:中国铁道出版社,2003-03.