小弟,真诚的希望大家能帮一帮我,权限设计源码,这是俺最后60分,祝大家在新的一年里
六六大顺,四季发财。谢谢各位热情的参与,谢谢
                                                                     [email protected]

解决方案 »

  1.   

    我是用MenuItem.Caption做的
    优点:代码容易写,循环遍历就可以搞定;程序修改的时候只需重新生成权限库,不需要修改程序和tag
    缺点:MenuItem.Caption重复就不准了
      

  2.   

    >>我是用MenuItem.Caption做的
    >>优点:代码容易写,循环遍历就可以搞定;程序修改的时候只需重新生成权限库,不需要修改程序和tag
    >>缺点:MenuItem.Caption重复就不准了
    那不如用MenuItem.Name来做,只不过多了一重MenuItem.Name对应MenuItem.Caption的手续罢了
      

  3.   

    To Kshape_zh(伟大的大伟//[给我个支点、我就可以翘起整个地球仪!])      兄弟,能否提供一下表结构,相关Code啊,谢谢,分不够再加,说心里话,你让我太感动了
      

  4.   

    hihuang(九哥)
    下面是我的全部权限控制单元代码了
    但是很遗憾,我的DLL找不到了
    --------------------------
    //其中的checkbox的个数代表你操作的个数
    //根据你的程序自己修改
    //在其他地方,就用CanDo函数,根据操作代号去做检测就可以了
    //我的数据库只有一个字段ControlName(integer)--取0或者1
    unit UserManageUnit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, DB, ADODB;type
      TUserManageForm = class(TForm)
        Bevel3: TBevel;
        Label1: TLabel;
        Button1: TButton;
        Button2: TButton;
        Label2: TLabel;
        GroupBox1: TGroupBox;
        CheckBox1: TCheckBox;
        CheckBox2: TCheckBox;
        CheckBox3: TCheckBox;
        GroupBox2: TGroupBox;
        CheckBox4: TCheckBox;
        CheckBox5: TCheckBox;
        CheckBox6: TCheckBox;
        GroupBox3: TGroupBox;
        CheckBox10: TCheckBox;
        CheckBox11: TCheckBox;
        CheckBox12: TCheckBox;
        GroupBox4: TGroupBox;
        CheckBox8: TCheckBox;
        CheckBox9: TCheckBox;
        GroupBox5: TGroupBox;
        CheckBox7: TCheckBox;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        ADOQuery1: TADOQuery;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormShow(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      UserManageForm: TUserManageForm;implementation
    uses LogUnit,SystemSetUnit;
    {$R *.dfm}
    //
    function DeleteAllControl(ADOQuery1:TADOQuery):boolean;far external 'UserManage.dll';
    function UpdateUser(ADOQuery1:TADOQuery;C:integer):boolean;far external 'UserManage.dll';
    function CanDo(ADOQuery1:TADOQuery;C:integer):boolean;far external 'UserManage.dll'
    //
    procedure TUserManageForm.Button1Click(Sender: TObject);
    begin
      Close;
    end;procedure TUserManageForm.Button2Click(Sender: TObject);
    //修改权限
    begin
      if Application.MessageBox('你确定要更改普通用户操作权限吗?','权限设置',MB_YESNO+MB_ICONQUESTION) = IDNO then
      begin
        Self.OnShow(Sender);
        Exit;
      end;
      DeleteAllControl(Self.ADOQuery1);
      if(Self.CheckBox1.Checked = true) then
        UpdateUser(Self.ADOQuery1,1);
      if(Self.CheckBox2.Checked = true) then
        UpdateUser(Self.ADOQuery1,2);
      if(Self.CheckBox3.Checked = true) then
        UpdateUser(Self.ADOQuery1,3);
      if(Self.CheckBox4.Checked = true) then
        UpdateUser(Self.ADOQuery1,4);
      if(Self.CheckBox5.Checked = true) then
        UpdateUser(Self.ADOQuery1,5);
      if(Self.CheckBox6.Checked = true) then
        UpdateUser(Self.ADOQuery1,6);
      if(Self.CheckBox7.Checked = true) then
        UpdateUser(Self.ADOQuery1,7);
       if(Self.CheckBox8.Checked = true) then
        UpdateUser(Self.ADOQuery1,8);
      if(Self.CheckBox9.Checked = true) then
        UpdateUser(Self.ADOQuery1,9);
      if(Self.CheckBox10.Checked = true) then
        UpdateUser(Self.ADOQuery1,10);
      if(Self.CheckBox11.Checked = true) then
        UpdateUser(Self.ADOQuery1,11);
      if(Self.CheckBox12.Checked = true) then
        UpdateUser(Self.ADOQuery1,12);
      Application.MessageBox('系统设置成功,请继续操作','权限设置',MB_OK+MB_ICONINFORMATION);
      Close;
    end;procedure TUserManageForm.FormShow(Sender: TObject);
    //显示已经设置的权限
    begin
      Self.CheckBox1.Checked := false;
      Self.CheckBox2.Checked := false;
      Self.CheckBox3.Checked := false;
      Self.CheckBox4.Checked := false;
      Self.CheckBox5.Checked := false;
      Self.CheckBox6.Checked := false;
      Self.CheckBox7.Checked := false;
      Self.CheckBox8.Checked := false;
      Self.CheckBox9.Checked := false;
      Self.CheckBox10.Checked := false;
      Self.CheckBox11.Checked := false;
      Self.CheckBox12.Checked := false;
      if CanDo(Self.ADOQuery1,1) = true then
        Self.CheckBox1.Checked := true;
      if CanDo(Self.ADOQuery1,2) = true then
        Self.CheckBox2.Checked := true;
      if CanDo(Self.ADOQuery1,3) = true then
        Self.CheckBox3.Checked := true;
      if CanDo(Self.ADOQuery1,4) = true then
        Self.CheckBox4.Checked := true;
      if CanDo(Self.ADOQuery1,5) = true then
        Self.CheckBox5.Checked := true;
      if CanDo(Self.ADOQuery1,6) = true then
        Self.CheckBox6.Checked := true;
      if CanDo(Self.ADOQuery1,7) = true then
        Self.CheckBox7.Checked := true;
      if CanDo(Self.ADOQuery1,8) = true then
        Self.CheckBox8.Checked := true;
      if CanDo(Self.ADOQuery1,9) = true then
        Self.CheckBox9.Checked := true;
      if CanDo(Self.ADOQuery1,10) = true then
        Self.CheckBox10.Checked := true;
      if CanDo(Self.ADOQuery1,11) = true then
        Self.CheckBox11.Checked := true;
      if CanDo(Self.ADOQuery1,12) = true then
        Self.CheckBox12.Checked := true;
    end;end.
      

  5.   

    我有完整的结构,基于:角色、用户、功能模块树、数据类别树,我们的产品中一直用它。
    如果需要,可以发email给我,友情提供给你做参考。
    [email protected]