晕! 不就是做个标志吗? procedure TMainFrm.MenuExecute(Sender: TObject); var n: integer; begin n := 0; if (Sender is TMenuItem) then n := (Sender as TMenuItem).Tag; case n of 1: showmessage('11'); 2: showmessage('12'); 3: showmessage('13'); 4: showmessage('14'); end; end;
procedure TMainFrm.MenuExecute(Sender: TObject);
var
n: integer;
begin
n := 0;
if (Sender is TMenuItem) then
n := (Sender as TMenuItem).Tag;
case n of
1: showmessage('11');
2: showmessage('12');
3: showmessage('13');
4: showmessage('14');
end;
end;
2、用十进制的方法,个位表示一个意思,十位表示一个意思这样的话,每个位就可以有0-9,共十个选择,但缺点就是位数比较少了。
[email protected]
分一定是你的,包括明天!
// 这个是默认的跟你你的业务规则 比如分为5类权限 那么 你可以把TAG这么设定
1000
2000
3000
4000
5000 剩余的以后扩充然后你还需要在数据库<或者文件中>对某一角色<对最原始的人的一种抽象>进行与tag值的对应关系 那么当一个人登录时 首先获得其角色 然后获取其tag值 然后再对比
方法一:
用户表:
T_UserInfo
id
name
对象表:
T_Object
id
name
权限表
T_Access
accessid
userid(外键,来自用户表)
objectid(外键,来自对象表)
access(用代码记录用户的权限组合:
1000 浏览
1100 浏览、添加
1110 浏览、添加、编辑
1111 浏览、添加、编辑、删除
等)
能不能给俺发一个实例:[email protected]
向你上面的例子 跟 我说的就不一样了比如 你的权限设定到菜单 或者设置到BUTTON 都有不一样的设计了
你自己可以试着去 做一个简单的 就2个权限吧 一个读 一个读&写
比如你是到菜单的 那么你就根据其tag值判断 不符合规则那么 Enable= false..就可以了。。
这个动作可以再登录的时候处理
在CSDN上看到了这样一个表结构,但不知 T_Object这个对象表有什么作用了
方法一:
用户表:
T_UserInfo
id
name
对象表:
T_Object
id
name
权限表
T_Access
accessid
userid(外键,来自用户表)
objectid(外键,来自对象表)
access(用代码记录用户的权限组合:
1000 浏览
1100 浏览、添加
1110 浏览、添加、编辑
1111 浏览、添加、编辑、删除
等)
也不像说的 角色