我有这样的一个设想,系统中的只有分配诺干的任务给某一个用户。具体形式就是
系统管理员分配诺干任务给用户A,A登陆到系统后,系统根据这个用户被分配的权限动态的生成菜单,这样用户就不能访问未被分配的任务了。
要求系统中的任务可以随时扩充或者删除,而不需要修改程序。
现在基本上已经知道怎么根据外部数据生成菜单的形式了,但是每个菜单项如何连接到一个任务呢(也就是一个form)。
      
     
  

解决方案 »

  1.   

    to: woodheadmail(木头)
       一个任务对应一个类。
       这个类的名称和其它一些描述性的信息被被存储在数据库里,我需要根据这个类的名称来得到它的实例,从而运行它的相应的方法。
       
      

  2.   

    说具体一点,我们吧每个任务做成以tform为基础的类,这样我们将新增的任务的类名和一些其它的描述信息以文本的形式放到数据库中。用户登陆的时候我们从数据库中调出文本信息生成菜单,这一点应该不难做到。
    每个最末的菜单项都和一个类名相对应,我们点菜单的时候就希望通过对应的类名(文本信息)来new 一个实例(就算这儿的类都是窗体形式的),这样我们就可以打开这个窗体了进行相应的操作了。
    大家谈谈想法
      

  3.   

    if 权限 then
      权限=true 
    else 
      权限=false
      

  4.   

    如button1是打开文件,用户具有此权限
    if 用户.打开文件 then
       button1.Enabled:=true
    else
       button1.Enabled:=false
      

  5.   

    同意‘jiaai(逍遥游)’,简单通用!
    up
      

  6.   

    还是先学UML做设计吧!!!!这在结构设计中用得还是有点多的!
      

  7.   

    我就是用权限字来做的,不过在库中显示出来的是经过xor后的值,我想这样可以有一定的保护作用
      

  8.   

    用ActionManage, 所有操作全部为Action, 数据库中存储相应Action的名字和代表有无权限的True和false, 在窗体初始化时读入这些布尔值完成各Action的设置, 可以定义一个所有窗口公共的函数来完成这项工作, 所以实际的代码量很少, 而且当增加模块或需要控制的功能时, 只要调用公共函数就好, 而权限设置模块设计简单. 我们现在就是这么做的, 基于角色的权限控制, 不光是菜单,还有按钮等都可以一起控制.
      

  9.   

    改进一下: jiaai(逍遥游)
     
      
    button1.Enabled := (用户.打开文件);
     
      

  10.   

    我用了一个主从表,楼上的用1001这样的办法不行,如果是两百个权限呢?多人开发怎么办?
    我用从表对应人员,一个人员有多少个权限,从表里就有多少条记录系统权限为0-999,然后,人事模块是1000-1999,物资模块是2000-2999这样分配下去可以在登陆时放入动态数组。菜单项都分配上TAG值,与权限编号对应。没有此权限就将菜单删除掉。这样,就无法使用此功能了。若精确到按钮权限,同理,分配TAG,将没有的权限按钮删除掉,或隐藏掉。
      

  11.   

    每个任务对应一个dll文件,即可让多人开发,有很好的扩充性!如何?