我现在要设计操作员权限模块,还没有头绪,怎么样让一个操作员以他的密码进去后,某些菜单进不去?
想问一下主要的思路:?

解决方案 »

  1.   

    每个菜单项都有tag的,赋予唯一的tag值
    var
      i:integer;
      TreeList: TStringList;
      TempIndex:  integer;
    begin
        TreeList:= TStringList.Create;    Vmenu:TComponent;
        for i:=0 to self.ComponentCount -1 do
        begin
          Vmenu:=self.Components[i];
          if (Vmenu.Tag<>0)and(Vmenu is TMenuItem) then
          begin
            Treelist.AddObject(inttostr(Vmenu.tag),Vmenu);
            if Vmenu.Tag in Digits then continue;
            TMenuItem(Vmenu).Visible:=false;
          end;
        end;    Treelist.Sort;
        while not(dataSet.Eof) do
        begin
          if Treelist.Find(dataSet.fieldbyname('qxid').AsString,TempIndex) then
          begin
             TMenuItem(TreeList.Objects[TempIndex]).Visible:=true;
          end;
          dataSet.Next;
        end;
      

  2.   

    或者定义一个数据表;字段包括 【用户名】,【权限】,【菜单】
    当用某个用户名登陆后;先去找到该用户名下的所有记录;
    遍历之;判断有无权限;又则另该菜单的enabled为true;
    反之则为false;
      

  3.   

    我是判断action的tag值的 来看操作员有没有这个权限的
      

  4.   

    菜单通过Tag实现权限的显示界面出于安全的,在内核中,每个操作做权限验证后,允许才Run
    可以防止使用某些软件把Disable的项目变成Enable,
    有软件可以做到的,自己Hook编程都能实现