事件与权限管理
权限管理会有专门的一章介绍,这里先简单介绍一下。
为便于权限管理,我们强列建议你为每一个用户指定一个分组,这样我们在编码进行权限管理的时候,就可以针对同一组的用户进行编码,而不用针对每一个用户进行编码。
权限管理有两种方式:
方式一
打开系统或者切换用户之后,都会触发LoadUserSetting事件,我们可以在这里设置代码,根据登录用户的分组进行权限设置。
示例
例如只有经理级别的用户,才能编辑表A,可以在LoadUserSetting事件中加入下面的代码:
If
User.Group = "经理" Then如果你要求订单表的折扣列只能经理编辑,可以在LoadUserSetting事件中加入下面的代码:
If
User.Group = "经理"
Then
DataTables("订单").DataCols("折扣").AllowEdit
= True
Else
DataTables("订单").DataCols("折扣").AllowEdit
= False
End
If
方式二
在Foxtable中进行任何一项数据管理操作,例如增加行、删除行、锁定行、编辑数据等等,都会触发事件; 通过在事件中编码,可以进行和登录用户相关的条件判断,符合条件则允许操作,不符合条件则禁止操作。 这样我们可以进行更复杂的权限管理。
示例
例如公司规定,对于已经结帐的行,只有“经理”级别的用户才能删除,你可以在BeforeDeleteDataRow设置如下代码:
'如果当前用户不是经理级别,而且即将被删除的行已经结帐,那么取消删除。
如果在该表的PrepareEdit事件中加入代码:
If
e.Row("已结帐") = True AndAlso User.Group <> "经理" Then那么就只有经理级别的用户才能编辑已经结帐的行。
如果要求只有经理才能修改折扣列的内容,可以在PrepareEdit事件中加入代码:
If
e.Col.Name = "折扣" AndAlso
User.Group <> "经理" Then
e.Cancel = True
End If