做好一个系统时,如何设置权限问题,一个是管理员,可以增删改,而另一个是user
只能读不能增删改.我用的是delphi7+sql2000怎么办
只能读不能增删改.我用的是delphi7+sql2000怎么办
解决方案 »
- delphi与SQL2000的图片读取
- delphi调用excel,vb宏的问题?
- 猪才会问这样的问题
- tstings等对象,在语句内部使用完后应释放。但如果是函数的返回值.有必要在使用后释放吗?怎么放?
- 关于ODBC的问题!急!!!在线等!!!(shylsz)
- 谁知道字符型怎么向日期型转换?
- 300分求购源代码!类似delphi的部分功能。
- 在DLL中为何不能使用Application.CreateForm()函数?
- 如何将TADOTable控件的GetRows返回值显示出来
- delphi语言参考手册
- 高分求如何计算form中的Edit组件数量
- 用idTcpClient发完数据流后,不能从idTcpServer接收处理后的数据!
先建几张表,比如说:一张用户信息表(包含权限ID),一张权限表(就是如管理员,普通用户之类的),一张菜单表,一张权限和菜单关系表。
权限表和菜单表有两个字段分别为(ID,Name)。
然后在Form的菜单中每个菜单都设一个tag值,把tag值对应到表里的菜单ID上,菜单项再关联到ActionList上(或者也可以直接设置Action的Tag)。再给个示例:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TMenuItem then
if pos('-' + IntToStr(Components[i].Tag) + '-', s) > 0 then
TMenuItem(Components[i]).Visible := True;
end;具体实现的工作留给楼主。
若是管理员、上述属性置為true...
但我不知道在DELPHI里做东西时怎么办就不知道了.
大家能不能给点详细的说一下:)
谢了
权限表和菜单表有两个字段分别为(ID,Name)。
然后在Form的菜单中每个菜单都设一个tag值,把tag值对应到表里的菜单ID上,菜单项再关联到ActionList上(或者也可以直接设置Action的Tag)。再给个示例:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TMenuItem then
if pos('-' + IntToStr(Components[i].Tag) + '-', s) > 0 then
TMenuItem(Components[i]).Visible := True;
end;
比如,有些楼友说到“在数据库存管理员的表中,加一个权限字段,用户登陆时,就判断有没有权限就可以了”,那是因为你现在所要求的功能听起来很简单,这样的做法当然是很最快的,但是如果以后“角色类型”与“用户类型”的数量增加了呢?也就是,有些用户只可以读,而有些可以读也可以增加等等,有些菜单这个用户可以使用,而其他的用户就不能。那样的话,权限字段就没有权限表和菜单表结合来得好。
总之,在复杂度并不是很高的情况下,应该考虑采用扩展性比较好的办法。
当然,如果楼主并没有定制用户权限的想法,系统本身对此也无要求,楼主可以使用权限字段的简单方法。
看来我们需要交流交流 我是hongke212阿^_^^_^
用户ID、操作1、操作2、....、操作n,这样可把权限分到具体的模块
我一般是用一个整型或长整型的数的各位代表权限(或者一个数组也行,不过存储起来麻烦)。
然后在进行操作时调用
checkuser(i:integer):boolean;
(i为操作号)来判断权限
楼主甚至可以采用授权的方式对用户进行权限定制,比方说有10中不同的权限或角色,就可以泛化出2^10-1种不同的用户,权限最低的就叫guest,最高的叫admin,哈哈,和数据库管理系统实现的功能一样。
按照这样的做法有多级别权限时还可以,不过只有两个级别的话很麻烦,可以在普通用户登陆时就把不允许用的都Enable := false;