鱼C论坛

 找回密码
 立即注册
查看: 1730|回复: 7

[已解决]主界面菜单权限问题

[复制链接]
发表于 2019-4-15 09:23:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
做了一个主界面和登录界面,想实现 不同用户登录后,用户在主界面看到的菜单不同,比如:管理员看到3个菜单,普通用户只能看到2个菜单,还有一个菜单被隐藏看不见了。请高手指点一下代码该怎么写。谢谢。
最佳答案
2019-4-15 11:46:45
定义两个表:用户表,权限表
用户表字段:id,user,pass,group
权限表字段:id,menu,permissions,group
软件启动后,肯定首先连接的数据库,以输入的用户名和密码为参数检索得到各个菜单的是否显示状态,然后遍历菜单是否visible
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-15 09:41:21 | 显示全部楼层
本帖最后由 凌九霄 于 2019-4-15 09:43 编辑

一般是建立一个权限表,将各个菜单和各个级别操作员的权限设定,有权限设为1,无权限设为0,每次登陆启动后去读取这张表,遍历设定菜单的隐现。这种好处是可以随时定制权限。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-15 09:55:32 | 显示全部楼层
凌九霄 发表于 2019-4-15 09:41
一般是建立一个权限表,将各个菜单和各个级别操作员的权限设定,有权限设为1,无权限设为0,每次登陆启动后 ...

我的设想是:只要一个管理员,一个普通用户 。DELPHI 7+ SQL SERVER 2000 . 登录界面点击登录后,根据我的登录用户名不同,出现的菜单不同。我不知道loginuser 如何定义。
if LoginUser = '管理员' then
begin
  菜单项1.Visible := True;
  菜单项2.Visible := True;
  菜单项3.Visible := True;
end;

if LoginUser = '一般用户' then
begin
  菜单项1.Visible := True;
  菜单项2.Visible := True;
  菜单项3.Visible := False;  //一般用户登录时,菜单项3不可见
end;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-15 11:08:32 | 显示全部楼层
xujian600 发表于 2019-4-15 09:55
我的设想是:只要一个管理员,一个普通用户 。DELPHI 7+ SQL SERVER 2000 . 登录界面点击登录后,根据我 ...

你这样当然也可以,只不过写死了,不灵活。一旦新增用户组或者更改菜单权限就需要修改源代码重新编译。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-15 11:29:05 | 显示全部楼层
凌九霄 发表于 2019-4-15 11:08
你这样当然也可以,只不过写死了,不灵活。一旦新增用户组或者更改菜单权限就需要修改源代码重新编译。

我不知道那个代码在哪里写。。。如何定义登录名?   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-15 11:46:45 | 显示全部楼层    本楼为最佳答案   
定义两个表:用户表,权限表
用户表字段:id,user,pass,group
权限表字段:id,menu,permissions,group
软件启动后,肯定首先连接的数据库,以输入的用户名和密码为参数检索得到各个菜单的是否显示状态,然后遍历菜单是否visible
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-4-15 11:54:53 | 显示全部楼层
谢谢,我再学习一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-17 22:46:30 | 显示全部楼层
凌九霄 发表于 2019-4-15 11:46
定义两个表:用户表,权限表
用户表字段:id,user,pass,group
权限表字段:id,menu,permissions,grou ...

你好,请教一下:
procedure Tstryker_login.Button1Click(Sender: TObject);

var user,pass,temp:string;
begin
  user:=Edit1.Text;
  pass:=Edit2.Text;

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Text:='select * from abc where 用户名='''+user+''' and 密码='''+pass+'''';
  Adoquery1.Open;
  if Adoquery1.RecordCount <>0 then
    begin
        Form1.f1.Enabled:=true;
        Form1.x1.Enabled:=true;
         form1.E1.Enabled:=true;
        Form1.s1.Enabled:=true;
        Form1.p1.Enabled:=true;

    temp:=adoquery1.FieldByName('权限').AsString;
  if temp='管理员' then
    begin
        Form1.f1.Enabled:=true;
        Form1.x1.Enabled:=true;
        Form1.s1.Enabled:=true;
        Form1.p1.Enabled:=true;
        form1.E1.Enabled:=true;
    end    else
    if temp='普通用户' then
        Form1.f1.Enabled:=true;
        Form1.x1.Enabled:=true;
        Form1.s1.Enabled:=true;
        Form1.p1.Enabled:=true;
         form1.E1.Enabled:=false;
        stryker_login.Hide;
        Form1.Visible:=true;

  end
  else
  begin
    ShowMessage('用户名或密码错误,请检查后重新登录');
    end;
end;
我这样写出来,主界面这个菜单  form1.E1.Enabled:=false; 管理员和普通用户一样显示灰色。不知道怎么写。还是没有达到我的目的。或者能告诉我使用哪个函数或者插件? 谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 08:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表