在PowerBuilder中實現菜單條級權限的設置

在PowerBuilder中實現菜單條級權限的設置


雲南昆明 陳進


在一個網絡應用程序中,對不同的使用人員授與不同的程序使用權是非常重要的。一般的應用程序都分:錄入權,查詢權,修改權,審覈權等等,很多功能可細分到菜單條級,才能方便管理,不同的功能應用應該授與不同工作性質的人員,才能使一個公司或團體分工明確,責任清晰,實現規範化管理。
對系統管理人員來說靈活方便地設置不同人員的對程序的不同權限,並能夠不以用戶身份進入程序也能查看到用戶所擁有的權限,這是後臺管理程序最基本的要求。本人通過實踐摸索在PB中實現了用戶程序到菜單條級權限的設置和查看。此模塊方便之處是管理員在設置用戶權限時所見的菜單與用戶所用的菜單一致,用戶有哪些權限一目瞭然。
我們先來看PB與此相關的兩個函數:Mid and Replace
1.函數Mid ( string, start {, length} )
取string字串中第start項後的length位字串。
例:Mid("ABCDEFG",3,2)
返回值:"DE"
2.函數Replace ( string1, start, n, string2 )
替換string1中第start 項後n位,用string2 串。
例:Replace ( "ABCDEFGH",3,2,"abc" )
返回值:"ABCabcFGH"
到此可能用過PB的朋友已能猜出這兩個函數就是在PB中實現菜單條權限定義的基礎。
我們先假設我們應用程序的菜單如下圖:
M_1  M_2  M_3 ......
M1_1  M2_1  M3_1
M1_2  M2_2  M3_2
M1_3  M2_3  M3_3
M1_4  M2_4
    M2_5
要求菜單條變量名的定義嚴格按照矩陣方式定義。然後複製一份與應用程序菜單一樣的菜單模式,用於系統授權模塊使用,包括菜單條變量名也一樣,只不過菜單條下無調用程序代碼,而是菜單狀態設置函數。設三個字符串全局變量,用於表示菜單條的狀態。我們約定"0"表示菜單條爲不可選,"1"爲可選。
string M1,M2,M3
M1="0000"     file://對應M_1的四個子菜單條
M2="00000"     file://對應M_2的五個子菜單條
M3="000"      file://對應M_1的三個子菜單條
設初始值爲菜單條皆不可選。
在M1_1菜單下clicked事件程序爲:
IF m1_1.Checked = TRUE THEN
m1_1.UnCheck( )
M1 = Replace( M1, 1, 1, "0")
ELSE
m1_1.Check( )
M1 = Replace( M1, 1, 1, "1")
END IF
 
在M1_1菜單下clicked事件程序爲:
 
IF m1_2.Checked = TRUE THEN
m1_2.UnCheck( )
M1 = Replace( M1, 2, 1, "0")
ELSE
m1_2.Check( )
M1 = Replace( M1, 2, 1, "1")
END IF
.....其它以此類推
函數說明:
file://m1_2.Check( )在所點選菜單條前加"V"(鉤符號)
file://m1_2.UnCheck( ) 在所點選菜單條前去掉"V"(鉤符號)
 
如果A用戶可使用M1_1,M1_3; M2_2; M3_1。那通過你鼠標的點選,菜單狀態變量的值應該爲:
M1="1010"
M2="01000"
M3="100"
 
如果B用戶可使用M1_1; M2_3,M2_4,M2_5; M3_1,M3_2,M3_3。那通過你鼠標的點選,菜單狀態變量的值應該爲:
M1="1000"
M2="00111"
M3="111"
把此值對應存入A、B用戶的權限字段中,在A、B用戶進入應用程序時取出,對應設置菜單條的可用與不可用,即實現了對用戶使用菜單權限的定義。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章