葉文勝
(黃岡職業(yè)技術學院人事處,湖北黃岡438002)
VFP中的菜單既可以直接編寫程序代碼實現(xiàn),又可以利用菜單設計器實現(xiàn)。利用菜單設計器設計菜單的步驟如圖1所示:
圖1 菜單設計步驟
菜單設計器編寫的菜單文件(.mnx)經(jīng)過生成后形成菜單程序文件,程序文件運行后執(zhí)行菜單的功能。
在設計菜單中,在菜單的“選項”中設計“跳過”的條件。
圖2 菜單的選項設置
跳過條件的設計方法:設計一個全局變量,當不同的用戶登錄時控制此變量的值,然后將此變量設置為菜單的“跳過”條件:當條件值為.t.時菜單跳過,即該菜單功能不可用,反之該菜單功能可用。
下面用一個完整案例說明如何實現(xiàn)用戶使用菜單權限的設計。
1.案例描述
(1)設計菜單mymenu,其中有四個菜單項:查詢(按姓名查詢,按學號查詢)、打印(打印課表,打印成績單)、修改(修改基本信息,修改密碼)、幫助(使用幫助、軟件升級);(2)設計一頂層表單myform,將菜單加載在表單上;(3)設計一個登錄表單userlogin,用于用戶輸入登錄賬號和密碼;(4)菜單使用權限控制:登錄時,當賬號為admin,密碼為admin,進入myform表單,并且所有菜單功能可用;當賬號為111,密碼為111,進入myform表單,其中菜單“修改”功能不可用,其余菜單功能可用;輸入其余的賬號和密碼顯示“賬號和密碼錯誤”提示信息。
2 案例實現(xiàn)
(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”的結(jié)果如下:
圖7 用戶名、密碼為“111”的進入界面
圖8 用戶名、密碼為“admin”的進入界面
輸入其他的用戶名或密碼運行界面如下:
圖9 輸入錯誤的用戶名和密碼運行結(jié)果
VFP數(shù)據(jù)庫應用系統(tǒng)中用戶使用菜單權限的設計方法有很多種,本文中主要利用了菜單設計中菜單項的“跳過”條件設置來控制。不同的用戶設置不同的“身份”值,“身份”值不同使得菜單的“跳過”條件結(jié)果不一樣,從而達到控制菜單項的目的。
[1]熊發(fā)涯.Visual FoxPro程序設計[M].北京:中國鐵道出版社,2003-03.