数据库系统中常遇到的一个问题.权限与菜单显示的问题.常遇到的一个问题.
用户分组的.每个组的权限不同.显示出的菜单也就不一样.我的方法是服务器食存一个 string 的字段.如 '1010010001111'
每位对应不同的功能. 1 为允许, 0 为不允许.但我会有些菜单项,是否可见.这样的功能.这些判断就只能写到客户端了.我是说有没有别的,更方便的方法没有?
用户分组的.每个组的权限不同.显示出的菜单也就不一样.我的方法是服务器食存一个 string 的字段.如 '1010010001111'
每位对应不同的功能. 1 为允许, 0 为不允许.但我会有些菜单项,是否可见.这样的功能.这些判断就只能写到客户端了.我是说有没有别的,更方便的方法没有?
不过,你也可以不换你的概念,只区分为不同的权限,你可以把可见、可用,分别当做两种权限就行。自己定义好顺序,
const
Permit_Const_Something_Postion_Visible=0;
Permit_Const_Something_Postion_Useable=0;if string[Permit_Const_Something_Position]='1' then 可见。
//设置用户权限
if ADOQTmp.Active then
ADOQTmp.Close;
ADOQTmp.SQL.Clear;
ADOQTmp.SQL.Add('Select * from Security where ucase(UserName)='''+uppercase(StrUser)+'''');
ADOQTmp.open;
if Not ADOQTmp.IsEmpty then
begin
For i:=0 to self.ComponentCount -1 do
begin
if self.Components[i] is Tmenuitem then
begin
ADOQTmp.Locate('FunctionName',self.Components[i].Name,[loCaseInsensitive]);
if ADOQTmp.FieldByName('Status').AsString='Y' then
Tmenuitem(self.Components[i]).Enabled:=True
else
Tmenuitem(self.Components[i]).Enabled:=False;
end;
end;
end