基本情况:
USERS表结构:
字段名:username, password, system, m01, m02, m03, m04, m05, m0101, m010101, m02, m0201....
值: abc , 1234 , 0 , 1 , 1 , 0 , 0 , 0 1 0 1 1 ....
我把我的所有菜单项的名字都作为一个字段存储在表中。我的MAIN_menu的情况,
每个一菜单都与数据库中USERS表中的一个字段对应,如一级菜单为m01,m02,m03.... 二级则为m0101等我想在MAIN_menu显示的时候,根据用户表中记录的值来决定哪个菜单可用,哪个不可用。问题:
1.我USER表是这样子设计可以吗?如果不是这样子设计的,那该如何设计,并告诉我理由。
2.我的动态显示菜单的代码应该写在哪里呢?
3.我的动态显示菜单的代码要怎么写?
4.如果我的问题问得傻,但我相信大家还是明白我的需求的,所以请告诉我你在处理这个事情时的设计逻辑。
谢谢大家啦。。
USERS表结构:
字段名:username, password, system, m01, m02, m03, m04, m05, m0101, m010101, m02, m0201....
值: abc , 1234 , 0 , 1 , 1 , 0 , 0 , 0 1 0 1 1 ....
我把我的所有菜单项的名字都作为一个字段存储在表中。我的MAIN_menu的情况,
每个一菜单都与数据库中USERS表中的一个字段对应,如一级菜单为m01,m02,m03.... 二级则为m0101等我想在MAIN_menu显示的时候,根据用户表中记录的值来决定哪个菜单可用,哪个不可用。问题:
1.我USER表是这样子设计可以吗?如果不是这样子设计的,那该如何设计,并告诉我理由。
2.我的动态显示菜单的代码应该写在哪里呢?
3.我的动态显示菜单的代码要怎么写?
4.如果我的问题问得傻,但我相信大家还是明白我的需求的,所以请告诉我你在处理这个事情时的设计逻辑。
谢谢大家啦。。
解决方案 »
- dbgrid 行改成列来显示或在报表时行改成列来显示怎么做啊?
- 如何实现动态执行delphi语句 200505
- 如何动态 创建一个 已设计好的 panel 控件 ????????????
- 各位兄弟朋友,谁知道哪有繁体版的windows下载的?98,2000都行。急啊
- 关于动画沙漏
- 如何把select语句连接的两个表中内容写到一个新表中去?
- 组合框问题,有用者有分
- delphi如何逐行读取select取得的结果
- 怎么给dbgrid加一个计算列??
- 请教一个非常古老的问题,如何判断EDIT中的字符是汉字(英文)还是数字,这不简单的?
- delphi 怎么判断字符数组是否为空
- 又来请教了。关于DLL调用。
用户登录进来,你就可以得到这个用户对应的记录。
if ADOQuery1.FieldByName('m01').AsBoolean then m01.Visible := true;
....
可以用循环完成
JeffChng说可以用循环完成,
是不是得用数组?
是不是用到MAIN_menu的哪个数组属性?
i:integer;
begin
for i:=0 to MainMenu1.Items.Count-1 do begin
MainMenu1.Items.Items[i].Visible:=false;
end;
end;
字段包括: username, menuid, menuCategory, MenuName, MenuSeq
用户名 菜单ID 菜单分类 菜单显示标题 显示序号
另外想对菜单有什么更详细的要求,可以再另外加字段.
2.我的动态显示菜单的代码应该写在哪里呢? 写到FormCreate或FormShow里面,推荐后者.3.我的动态显示菜单的代码要怎么写? 从数据库中读取权限表,循环动态添加4.如果我的问题问得傻,但我相信大家还是明白我的需求的,所以请告诉我你在处理这个事情时的设计逻辑。
一个用户(角色)权限表,保存用户编号和该用户(角色)拥有权限的菜单Name,主菜单添加时,只需初始化菜单表,FormShow时首先将所有菜单Enable设为False,然后根据从权限表取出的菜单Name改为True。