控制权限问题,哪位老师帮忙优化一下,是不是有简单的办法。

NEEZA哪吒 2021-04-19 08:12:18
Main.ADOQuery1.SQL.Clear; //打开权限表,登录的时候判断。
Main.ADOQuery1.SQL.Add('Select Top 1 * From S_SysUser Where UserName=:UserName');
Main.ADOQuery1.Parameters.ParamByName('UserName').Value:=Trim(ComboBox1.Text);
Main.ADOQuery1.Open;
If Main.ADOQuery1.FieldByName('NewBtn').AsString='0' Then //判断新增按钮的值0/1
Begin
Main.NewBitbtn1.Visible:=False;
End;

//问题,是,如果这样假设我有1000个按钮,则需要写1000条代码
怎么能简化一些,就能够控制住每个按钮是否可见呢?
...全文
887 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
代码简单
  • 打赏
  • 举报
回复
怎么可能有1000个按钮呢?
要带啊吗简单,可以:
var
i: integer;
ButtonVisible: boolean;
begin
//...
ButtonVisible := Main.ADOQuery1.FieldByName('NewBtn').AsString<>'0';

for i := 0 to Main.ControlCount - 1do
if Main.Controls[i] is TBitBtn then
Main.Controls[i].Visible := ButtonVisible;
NEEZA哪吒 2021-04-19
  • 打赏
  • 举报
回复
引用 1 楼 tanqth的回复:
一个简单的办法是: 把这个内容写成一个通用的函数,输入参数是用户名、按钮名(其实就是需要判断的权限),返回是否有权限。然后对每个按钮进行判断。 你要少写代码,可以将按钮做一个继承类,在新类里把权限判断内容加上,然后使用新类。这外相对复杂点,对你来说可能用不上。 权限管理来说,整个体系做好的话还是挺复杂的,你用简单的就好,以后再慢慢优化。
那我这样写,会不会系统执行的效率太差了,代码太多了。会影响性能不?
tanqth 2021-04-19
  • 打赏
  • 举报
回复
一个简单的办法是: 把这个内容写成一个通用的函数,输入参数是用户名、按钮名(其实就是需要判断的权限),返回是否有权限。然后对每个按钮进行判断。 你要少写代码,可以将按钮做一个继承类,在新类里把权限判断内容加上,然后使用新类。这外相对复杂点,对你来说可能用不上。 权限管理来说,整个体系做好的话还是挺复杂的,你用简单的就好,以后再慢慢优化。
hj8090 2021-04-19
  • 打赏
  • 举报
回复
按钮事件里先判断权限再执行动作,或form进入之前判断权限,没权限的不让进。 各有优缺点,自己决定。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧