DataModFrm. USERMOD.FieldByName('授权模块').AsString:='权限管理';
DataModFrm. USERMOD.Post;
End;
//调用口令验证模块,获取用户类别,验证通过后将用户名称和用户类别
//保存到全局变量DataModFrm.Guser和DataModFrm.Gtype,并进入主程序。
Application.CreateForm(TKLYZFRM, KLYZFRM);
KLYZFRM.ShowModal;
KLYZFRM.Free;
USER:=DataModFrm.Guser;//从全局变量获取登录用户名和用户类别
USERTYPE:=DataModFrm.Gtype;
//用两层For循环,如果遍历菜单,搜寻并自动登记模块未登记模块,
//菜单的Caption值为模块名称
DataModFrm.PRGMOD.Open;
for J:=0 to MainMenu1.Items.Count-1 do begin
for K:=0 to MainMenu1.Items[J].Count-1 do begin
MKNAME:=MainMenu1.Items[J].Items[K].Caption;//获取菜单Caption属性值
if NOT DataModFrm.PRGMOD.LOCATE('模块名称',MKNAME,[]) then begin
DataModFrm.PRGMOD.Append;
DataModFrm.PRGMOD.FieldByName('模块名称').AsString:=MKNAME;
DataModFrm.PRGMOD.FieldByName('模块说明').AsString:=MKNAME;
DataModFrm.PRGMOD.Post;
end;
end;
end;
DataModFrm.PRGMOD.Close;
//建立程序模块数据集
DataModFrm.GQUERY1.Close;
DataModFrm.GQUERY1.SQL.TEXT:='SELECT * FROM 程序模块表';
DataModFrm.GQUERY1.Open;
//建立登录用户可访问模块列表数据集
DataModFrm.GQUERY2.Close;
DataModFrm.GQUERY2.SQL.TEXT:='SELECT * FROM 用户授权表 WHERE 用户类别='''+USERTYPE+'''';
DataModFrm.GQUERY2.Open;
//用两层For循环动态判定各个菜单是否可用,菜单的Caption值就是模块名称
DataModFrm.GQUERY1.First;
for I:=1 to DataModFrm.GQUERY1.RecordCount do begin
|