有几个问题想请教一下各位:
1.权限怎样实施到具体的按钮等,比如对A模块的权限有 读,新建,和删除,那么怎样把"编辑"按钮设为不可用呢?就是说,怎样把相应的权限应用到窗体上的每一个按钮和功能上.
2.打印功能应不应该另外独立一个权限?(即,是否该有打印权限?还是只要有了"读"权限就有了打印权限)?
谢谢.

解决方案 »

  1.   

    汗!其实我也不知道具体怎么用.
    好像应该在ActionList里创建一系列的Action,然后把控件的Action属性和这些关联起来,然后控制ActionList就行了
      

  2.   

    可以一个验证FUNCATION,
    在点相应按钮时调作
      

  3.   

    我个人觉得楼主要解决的问题有如下两点,不知道我分析的对不对:
       1、怎么样在软件中实现权限的控制功能
          2、在软件中应该怎么分配组合权限
    我个人觉的这两个问题都很好解决:
       第一个的解决方法有很简单,比如:利用菜单和按钮有有显示和隐藏的功能,只显示给用户有权限的菜单或按钮; 又或是将不可用或是权限不到的按钮变灰
          第二个的解决方法是,同用户做好调研工作,确定权限需要分成几级 对于权限的分配一般有两种,比如:设置管理员库,分层管理,一级,二级,三级:上一级包含有下一级的全部功能 又或是:设置平级管理:a级,b级,c级:不同之间权限不能有重合  当然两种方法可以重合使用,但是对于小的项或是中等的项目,没有必要将程序权限设定的非常复杂,以加重了程序的设计工作  其它都不是问题,主要学是与用户沟通,以确定权限的分类
      

  4.   

    我是做的:新增,修改,刪除,金額,打印,審核,執行。再加入每張表單的名字在記錄中。
    用的是變量,每進入表單則拿出進行檢查,如果是可以的,就true,否則則false,就把按鈕灰掉。
    執行菜單則是登錄後進入主介面時檢查的。
      

  5.   

    to : netsolution(我行我朮) 
    我也是这样做,可是按钮比较多,代码多而乱,我想写成一个函数来控制,写不来..
      

  6.   

    procedure CheckRight(ModuleCode:String;UserName:String);begin
     qyTemp.Close;
     qyTemp.SQL.Clear;
     qyTemp.SQL.Add('select * from UserRight where ModuleCode =:ModuleCode and UserName =:UserName');
     qyTemp.Parameters.ParamByName('ModuleCode').Value := UserName;
     qyTemp.Parameters.ParamByName('UserName').Value := UserName; if qyTemp.RecordCount >0 then
     begin
    //设置按钮
    btnInsert.Enabled := qyTemp.FieldByName('InsertRight').AsBoolean;
    btnEdit.Enabled := qyTemp.FieldByName('EditRight').AsBoolean;
    btnDelete.Enabled := qyTemp.FieldByName('DeleteRight').AsBoolean;
    btnPrint.Enabled := qyTemp.FieldByName('PrintRight').AsBoolean;
    btnPreview.Enabled := qyTemp.FieldByName('PrintRight').AsBoolean;
    btnRefresh.Enabled := true;
    btnHelp.Enabled := true;
    btnExit.Enabled := true;
     end;
    end;
      

  7.   

    在数据库里建个用户权限表,用不同的身份登陆时候读取不同的配置
    我是参照了windows的权限设计方法设计的
      

  8.   

    一般来说有两种方法
    方法1:
       用户表中加一个长字符串的字段用来表示权限。如 Droit char(255)
       这个字段每一个字节,表示一个功能的权限。
       如:每一位表用户的查看 第二位表用户添加 第三表用户修改 第四表用户删除 ....
       Droit = '10010.................' 这样的。1 表许可 0 表不许可方法二:
      建一用户权限表
      UserID , OperateID, CanRead,CanWrite,CanOpen,CanPrint,CanExport ,CanDelete 
      这样。明白了吧。个人意见:
      方法一:适合小系统,权限Mask 要事先设计好,事后不能更改。好处就是登录时一次性读出来,检查权限时直接在客户端就完成了。速度快。
      方法二:适合于一些大的系统。但设计上不是很好办,每次检查权限要读一些数据库(当然也可以一次性读出来)。适合于一些比较规则化的权限分配。