其他要求都做完了,就要发布了,然而,客户要求象速达3000xp一样的,给出个权限界面,对所有的数据增,删,改,查都用check来选定,我没做过,被卡住了,又不能对客户说咱们不懂,那位高手能给出思路,当然因为很急,有source demo最好了,
请大力支持.
信箱:[email protected]

解决方案 »

  1.   

    我做过,只要把菜单的NAME放到数据库中,然后设置岗位菜单的对应关系,用户再分岗位授权。在窗体创建的时候从数据库里读取用户的菜单权限,找到相应菜单NAME设为不可用就可以了。
      

  2.   

    同意楼上的观点
    我们是这样的 可以为任意一个用户指定菜单级别的权限 如果具有权限的 则放到数据库中
    然后 读取 凡是有的则invisible = true 否则 fasle。。
      

  3.   

    >> 对所有的数据增,删,改,查都用check来选定这还算好的,没有要求你对每一张表的 行、列 做授权。
      

  4.   

    to lhm1976 麻烦截断代码给我,谢谢了
      

  5.   

    要是你的权限用的是action的tag值处理的话
    我觉得只是在数据库增加一个表的问题
      

  6.   

    angle097113 以前没有用过action tag,可以介绍一下吗?
      

  7.   

    我们的项目也是使用form或button的tag设置的。
    就是在数据库中得自己定义一个所有需要操作权限的表,存储form和button,menu等的tag值,
    写一个函数把用户的权限传进来,判断哪些不能访问
      

  8.   

    Borland的Action可以说就是为了权限问题而工发的。
    为什么大家不用呢?
      

  9.   

    做个表 专门放权限 字段都是BOOLEAN类型 DI表里有相应权限代码 打开程序的时候检查用户权限 取几个BOOLEAN的值 
    业务逻辑都用TAction写好 然后根据权限决定TAction是否禁用
      

  10.   

    给操作员表增加字段,也就是各菜单项的控件字段,有多少个菜单项就增加多少个字段。
    这样,每个操作员对每个菜单都可有不同的操作权限。
    再做一个界面来控件这些字段的真假值,这样就可以用checkbox控件来实现了。
      

  11.   

    将每个“增加”,“修改”,“删除”按钮的TAG取一个不同的数字,然后将这个数字作为BIT字段放到权限表(SQL SERVER)中。在打开FORM时,就根据按钮的TAG值的布尔值来设定其enable属性。
      

  12.   

    不好意思最近几天比较忙没有看见你的回复
    其实就是把主界面上的所有的事件都写到action然后每个action的事件有tag的属性
    再把菜单的事件直接指定为action的事件 然后每个操作员有一个字段来存放拥有的权限的tag值 最后在登陆界面的时候根据用户拥有的tag值来确定哪个action是可以用的enable
    其实还是需要借助一个表来存放所有的tag和对应的权限的名称来给用户分配权限
    不知道我说得你明白了没有
      

  13.   

    建立三个表
    1。T_Popedom
     -----------------------------------------
      ID     Popedom_Name     Popedom_Caption
      1        MnuCut             剪切
      2        MnuCopy            复制2。T_Group
    ------------------------------------------------------
      ID       Name       ParentID    ParentName         Type
     001    系统管理员       0            0              Group
     002      系统主管       001       系统管理员        Group
     003      张三          001        系统管理员        Staffer
     004      李司          002        系统主管          Staffer3。T_PopedomMap
    ----------------------------------------------------------
      ID     GroupID        PopedomID       PopedomName      OperType
     001      001              1               剪切             1***Enable=False
     002      001              2               复制             0***Visible=False
    其中T_Popedom表中的ID是组件的Tag的值
      

  14.   

    to swaye(swaye):
    我没开DELPHI,随手写的,所以下面的代码也不知会不会有语法错误,只是个思路而已,我也没去验证过
    以下代码是各控件的有效性(也就是权限)控制代码,放在窗体FORMSHOW事件中
    //先在数据库中建一个权限分配表,表结构大致是窗体名(form_name),窗体的标题(form_name_cn),各控件的有效性值(qx)
    var i:integer;
        s:string;
    with adoquery1 do 
    begin
      close;
      sql.text:='select * from t_quanxian where form_name='+quotedstr(self.name);
      open;
      s:=fieldbyname('qx').asstring;//form_name为权限表中的窗体名字段,qx为该窗体对应的各控件的权限设置值
    end;for i:=0 to self.componentcount-1 do 
    begin
      if (self.components[i].classtype=tbutton) or (self.components[i].classtype=tmenuitem) then 
      begin
        try 
          (self.components[i] as tbutton).enabled:=strtobool(copy(s,i,1));
        except 
          (self.components[i] as tmenuitem).enabled:=strtobool(copy(s,i,1));
        end;
      end;
    end;
    权限设置代码同理