系统权限已经被弄的很透彻了,根据用户名、用户等级、等级所对应的功能,3层组成。表结构你知道的吧,另外还需要在系统的每一个按钮的CLICK事件中,去验证是否用户有权限使用此功能。或者你需要使用一些其他的风格设计,比如:低级别的用户无法看到高级别用户一样的界面,根据用户等级的不同进行界面的布局,则需要你在FORMLOAD中自己定义这个控件的位置和大小。基本的伪代码给你些吧。 BTNCLICK BEGIN IF FUNC_CHECKUSER(USERNAME) THEN BEGIN .... END ELSE BEGIN SHOEMESSAGE('1111'); EXIT; END; END;FORMLOAD BEGIN IF FUNC_CHECKUSER(USERNAME) THEN BEGIN BTN1.VISIBLE := TRUE; BTN1.ALIGN := RLRIGHT; BTN1.CAPTION := '111'; END ELSE BEGIN BTN1.VISIBLE := FALSE; BTN.CAPTION := ''; BTN.ENABLE := FALSE; EXIT; END; END;
把數據庫控件全放到 data module裡,設置好adoconnection,adoquery的屬性。 然後在其它單元裡引用data module就好了。 with frm_data.adoquery1 do begin close; sql.clear; sql.add(sql); open; end;
BTNCLICK
BEGIN
IF FUNC_CHECKUSER(USERNAME) THEN
BEGIN
....
END
ELSE
BEGIN
SHOEMESSAGE('1111');
EXIT;
END;
END;FORMLOAD
BEGIN
IF FUNC_CHECKUSER(USERNAME) THEN
BEGIN
BTN1.VISIBLE := TRUE;
BTN1.ALIGN := RLRIGHT;
BTN1.CAPTION := '111';
END
ELSE
BEGIN
BTN1.VISIBLE := FALSE;
BTN.CAPTION := '';
BTN.ENABLE := FALSE;
EXIT;
END;
END;
然後在其它單元裡引用data module就好了。
with frm_data.adoquery1 do
begin
close;
sql.clear;
sql.add(sql);
open;
end;
UserID, TableID, Power, 分别对应,用户编号,表名,权限,根据用护有对某个表的权限值(如:001,tb1,7),那么,它对tb1这个表,只能查看,新增,修改,而不能删除.
当然,你可以做得更细一些,比如,导出数据,打印数据,对于操作流程上的权限,采用分用户组管理,可能会好一些,毕竟上面的只是针对数据表的权限管理.