程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 在Delphi技巧實現權限管理

在Delphi技巧實現權限管理

編輯:Delphi
   在運用Delphi編制一些應用系統時,有很多時候都需要給不同的用戶賦予不同的權限,而不同的系統又有不同的權限分配方式,如果在程序中去為每一位用戶分配權限的話,不僅使得程序的編制十分麻煩,而且也不利於管理!筆者近日想得一自認為比較好的方法,願與大家共享,並望各位多指教!

   在很多的系統中,權限通常是被分成幾級的。每一級的用戶所能實現的操作是不同的,而實現這一功能的方法一般都是讓不同權限的用戶見到不同的菜單。簡單的說就是對不具有某一權限的用戶這一菜單就是不可見的!為了實現這一控制,程序員們往往得花費很多的時間去做這一模塊,浪費了很多寶貴的時間!

   筆者的想法是:如果設一個二維數組,第一維代表第一級菜單,第二維代表子菜單,每一個數組元素只存儲0或1這兩個數,某一權限的用戶對應著一個二維數組,而這個數組又代表了相應的菜單。給某一級別的用戶分配權限後,他便擁有了一個相應的數組。登錄時,從數組中取出各個元素的值,如果為1則相應的菜單出現,為0則不出現菜單。用這種方式不但可以分級(同一級用戶的數組相同),還能實現在不同的用戶間實現權限細分,只要你修改相應的數值為0或1即可!

   上面是一個簡單例子的運行結果。
  下面是部分源程序(這僅是一個解釋性的例子程序),為了簡便,程序中只有一個窗體和一個主菜單。在創建窗體時初始化數組M,顯示時讀出數組值並通過設置菜單的Enabled屬性或者Visible屬性的True或False來控制顯示!!
  var
    Form1: TForm1;
    m:array[0..1,0..4] of integer;//定義存儲的數組
    i,j:integer;//定義循環的變量

  implementation

  {$R *.dfm}

  procedure TForm1.FormShow(Sender: TObject);
  begin //讀出數字並控制菜單的顯示
     for i:=Low(m) to High(m) do
        for j:=Low(m[i]) to High(m[i]) do begin
           if m[i][j]=0 then MainMenu1.Items[i].Items[j].Enabled:=false
           else MainMenu1.Items[i].Items[j].Enabled:=true;
  end;
  end;

  procedure TForm1.FormCreate(Sender: TObject);
  begin //下面是初始化
     k:=0;
     for i:=Low(m) to High(m) do
        for j:=Low(m[i]) to High(m[i]) do
           if (j mod 2)=0 then m[i][j]:=1
           else m[i][j]:=0;
  end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved