对于一个TREEVIEW带CHECK框做一个权限树;
--某某系统
|--AA模块(01)
 |--费用窗体(0101)
  |--审核(010101)
  |--提交(010102)
 |--出库录入窗体(0102)
...
|--BB模块(02)
 |--费用窗体(0201)
  |--审核(020101)
  |--提交(020102)
  |--出库录入窗体(0202)
...               //其它模块等如果用户TEST具有AA模块中的费用窗体中的审核权限,即写到数据库为01|0101|010101|
因为AA模块的费用和BB模块的费用都是同一个窗体,所以我用下面的方法写,权限多不太好,代码一长串能不能简化呢?,
if (GModType==modSE) //AA模块
{
    rolSetCheckD:=rolSetCheck0;           //即AA模块的审核(010101) 
    rolLookCChg:=rolSELookCChg;    //rolSetCheck0.rolSELookCChg之类的是一个公共变量,
    rolLookSpcChg:=rolSELookSpcChg;         
    rolLookSpcComm:=rolSELookSpcComm;            
    rolLookOtherOfcChg:=rolSELookOtherOfcChg;
...
}else
if (GModType==modAE) //BB模块
{
rolSetCheckD:=rolSetCheck1;           //即BB模块的审核(020101) 
...                                   //这里省略掉了
}else
if (GModType==modSI) //CC模块
{
...
}
bSetCheckD:=ChkItemAuth(rolSetCheckD);   //判断有没有审核权限
btnSetCheck=btnSetCheck.enabled && bSetCheckD;//审核按钮的状态
因为该系统模块很多,用到的都是相同的窗体,能不能对上面的代码简化呢?或有更好的方法解决吗?谢谢!~

解决方案 »

  1.   

    to 如果用户TEST具有AA模块中的费用窗体中的审核权限,即写到数据库为01|0101|010101|为什么不直接存010101呢,前面的东西可以用010101的substring来获得
    例如:
    "01" == substring( "010101", 0, 2 )
    "0101" == substring( "010101", 0, 4 )
      

  2.   

    这样做的目的是为了审核窗体也有权限,如果不勾上审核窗体,那么他就没有这个权限也就无法打开该窗体;
    现在主要的问题是下面这段,TO Knight94(愚翁)  帮忙看看,谢谢!~
      

  3.   

    Knight94(愚翁)  已经给了思路了,那个字符串不是每两位代表一个意思吗?