下面是一个很简单的权限管理测试的例子,(注:qx为权限表,login.edit1.text是在登陆窗体中输入的用户名,现在问题是权限表有这样一条记录字段0 字段1 字段2 字段3 字段4 字段5 字段6 字段7 字段8 字段1 字段9
--- --  --  --- --- --- --- --- --- --- ---
 echo  1        1       1       0      0        0       1       1       1        1
字段0为登陆用户名.)
  
我的思想是:在主窗体"formshow"时,从权限表中查询当前登陆用户名的权限信息.
为"0"时,把菜单的enabled属性设置为false;
   我下面的代码就是这样做的呀,现在的问题是:当我以"echo"这个用户名登陆时,为什么
下面的代码没有发挥作用,为"0"的菜单的"enabled"还是为true,为什么没有变成false,
请各位大哥指导,谢谢!!procedure Tmainsys.FormShow(Sender: TObject);
begin
     with dm.query4 do
        begin
             close;
             sql.Clear;
             sql.Add('select * from qx where 用户名=:userixm');
             parameters.ParamByName('userixm').Value:=trim(login.Edit1.Text);
             prepared:=true;
             open;
             if fields[1].Value=0 then
                 begin
                     N2.Enabled:=false;
                     speedbutton1.Enabled:=false;
                 end;
             if fields[2].Value=0 then
                 begin
                     N6.Enabled:=false;
                     speedbutton2.Enabled:=false;
                 end;
             if fields[3].Value=0 then
                     N4.Enabled:=false;
            if fields[4].Value=0 then
                 begin
                     N13.Enabled:=false;
                     speedbutton4.Enabled:=false;
                 end;
            if fields[5].Value=0 then
                 begin
                     N15.Enabled:=false;
                     speedbutton5.Enabled:=false;
                 end;
            if fields[6].Value=0 then
                 begin
                     N16.Enabled:=false;
                     speedbutton6.Enabled:=false;
                 end;
             if fields[7].Value=0 then
                     N17.Enabled:=false;
             if fields[8].Value=0 then
                     N9.Enabled:=false;
             if fields[9].Value=0 then
                 begin
                     N11.Enabled:=false;
                     speedbutton3.Enabled:=false;
                 end;
        end;
end;end.

解决方案 »

  1.   

    .Items[li].Visible:=false;
    试试这样做行不行?
      

  2.   

    我感觉你应该用LOCATE语句在权限表中查询用户是否存在,然后再决定他的权限。
    你上边的代码在QUERY的OPEN 之后直接就进行操作,不管是否找到了这个用户。所以不能实现你的功能。
    我可以预言,你输入一个不存在的用户进去,他的权限将是所有的菜单项。这样的话,还要权限表干什么呢?