我是想管理员登录后显示文件、信息操作、信息查询三个菜单项,学生登录后显示文件、学生选课、已选课程三个菜单项。
因为我建的用户表中有致命管理员或学生身份的auth字段,所以我想在登录窗体中定义一个判断身份的全局变量temp,然后把查询到auth信息赋给temp,即temp:=trim(adoquery1.FieldByName('auth').AsString);再然后想在主窗体中,通过判断temp来决定显示哪几个菜单项,具体应该怎么实现?
求大神指教!!如有概念错误,请指正!!!
6 个解决方案
#1
一定要给满分呀!
procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
ado_tmp:=TADOQuery.Create(nil);
ado_tmp.Connection:=ADOConnection1;
ado_tmp.Close;
ado_tmp.sql.clear;
ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
ado_tmp.Open;
ado_tmp.First;
for i:=0 to ado_tmp.RecordCount do
begin
TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
ado_tmp.Next;
end;
end;
procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
ado_tmp:=TADOQuery.Create(nil);
ado_tmp.Connection:=ADOConnection1;
ado_tmp.Close;
ado_tmp.sql.clear;
ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
ado_tmp.Open;
ado_tmp.First;
for i:=0 to ado_tmp.RecordCount do
begin
TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
ado_tmp.Next;
end;
end;
#2
用户、角色、角色资源。
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible
#3
大多数软件对于菜单的处理,主要如下:
1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False; 无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False; 无权菜单项,隐藏起来,自然无法操作了。
1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False; 无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False; 无权菜单项,隐藏起来,自然无法操作了。
#4
思路、代码大赞,感谢!已解决!
#5
嗯嗯,后来想明白了,先都置为false了,然后相应的打开了
#6
多谢,这下更加明白了!
#1
一定要给满分呀!
procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
ado_tmp:=TADOQuery.Create(nil);
ado_tmp.Connection:=ADOConnection1;
ado_tmp.Close;
ado_tmp.sql.clear;
ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
ado_tmp.Open;
ado_tmp.First;
for i:=0 to ado_tmp.RecordCount do
begin
TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
ado_tmp.Next;
end;
end;
procedure TForm_main.Button1Click(Sender: TObject);
var ado_tmp:tadoquery;
i:Integer;
begin
ado_tmp:=TADOQuery.Create(nil);
ado_tmp.Connection:=ADOConnection1;
ado_tmp.Close;
ado_tmp.sql.clear;
ado_tmp.SQL.Add('select * from user where UserName=''www'' ');
ado_tmp.Open;
ado_tmp.First;
for i:=0 to ado_tmp.RecordCount do
begin
TMenuItem(self.FindComponent( Trim(ado_tmp.fieldbyname('MenuItemName').AsString))).Visible:=False;
ado_tmp.Next;
end;
end;
#2
用户、角色、角色资源。
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible
把需要按角色分配的菜单权限或者按钮权限全部初始化。
然后把这些资源分别指定给各个角色。
最后登录时取出用户所对应角色的所有资源,遍历,设置visible
#3
大多数软件对于菜单的处理,主要如下:
1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False; 无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False; 无权菜单项,隐藏起来,自然无法操作了。
1、不同的角色,都共用一个菜单。这样,菜单项不需要分别创建了。
2、通过角色分别设置权限,消除(隐藏)无权的菜单项。有无权的菜单项主要有二种处理办法。
(1)MenuItem.Enabled:=False; 无权菜单项,显示灰色,不能操作(事件无效)
(2)MenuItem.visible:=False; 无权菜单项,隐藏起来,自然无法操作了。
#4
思路、代码大赞,感谢!已解决!
#5
嗯嗯,后来想明白了,先都置为false了,然后相应的打开了
#6
多谢,这下更加明白了!