WinFramework轻量级开发框架 - 窗体权限机制
Winform开发框架
快速开发框架
软件开发平台
WinFramework
轻量级框架
插件框架
原创软件@csframework.com
1. 窗体权限机制简介
WinFramework轻量级框架窗体权限采用逻辑运算“或/or“运算机制,功能权限值在 WinFramework.UI.Core.FunctionAuthority 中定义。
WinFramework.UI.Core.FunctionAuthorityCommon 设定了 WinFramework轻量级开发框架中默认已占用的公共权限值,若需要扩展权限,应该避免使用这些已定义的权限值。
2. 计算机编程布尔运算(逻辑运算)
逻辑运算通常用来测试真假值。最常见到的逻辑运算就是循环的处理,用来判断是否该离开循环或继续执行循环内的指令。
逻辑运算:在逻辑代数中,有与、或、非三种基本逻辑运算。表示逻辑运算的方法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。
各种编程语言中的逻辑运算符
作用 | C语言 | Pascal |
等于 | == | = |
不等于 | != | |
小于 | ||
大于 | > | > |
小于等于 | ||
大于等于 | >= | >= |
与 | && | and |
或 | || | or |
非 | ! | not |
异或 | ^ | xor |
运算规则
3. 窗体权限定义 FormAuthority
重载 窗体属性CurrentAuthority,在 frmBaseData 基类窗体中定义的,功能窗体继承 frmBaseData 时,重写这个属性 CurrentAuthority 来定义窗体的权限
protectedoverrideint FormAuthority
{
get
{
return base.CustomerAuthority;
}
}
该属性默认为:
//当前窗体初始化的公共权限
protected override int FormAuthority
{
get
{
return FunctionAuthorityCommon.ADD//新增
+ FunctionAuthorityCommon.EDIT//修改
+ FunctionAuthorityCommon.DELETE;//删除
//+ FunctionAuthorityCommon.Save//保存
//+ FunctionAuthorityCommon.Cancel;//取消
}
}
可以使用的权限值:参考 WinFramework.UI.Core.FunctionAuthority 类
属性 | 名称 | 权限值 |
NONE | 没有任何权限 | 0 |
FVIEW | 访问权限,每个窗体都应该有 | 1 |
ADD | 新增 | 2 |
DELETE | 删除 | 4 |
EDIT | 修改 | 8 |
SaveEx | 保存 | 16 |
SaveAndCloseEx | 保存后关闭 | 64 |
APPROVAL | 审核 | 32 |
PREVIEW | 打印预览 | 128 |
Export | 导出 | 256 |
CancelEx | 返回/取消 | 512 |
Refresh | 刷新 | 1024 |
EX_01 | 扩展权限 | 2048 |
EX_02 | 扩展权限 | 4096 |
EX_03 | 扩展权限 | 8192 |
EX_04 | 扩展权限 | 16384 |
EX_05 | 扩展权限 | 32768 |
EX_06 | 扩展权限 | 65536 |
ALL | 所有权限 | 1073741823 |
4. 设置权限名称
在frmBaseChild 基类窗体中使用 SetAuthorizeName 方法来设置权限名称,frmBaseChild 中提供一个虚拟函数 InitAuthorize(),会在构造器中调用这个函数。
/// <summary>
/// 构造函数
/// </summary>
public frmBaseChild()
{
InitializeComponent();
//if (CheckDesingModel.IsDesingMode()) return;
if (this.isDesignTime) return;
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
_Buttons = new RibbonBarButtonCollection();
this.Load += frmChildBase_Load;
this.InitAuthorize();
}
/// <summary>
/// 初始化权限
/// </summary>
protected virtual void InitAuthorize()
{
SetAuthorizeName(FunctionAuthorityCommon.FVIEW, "查看");
}
因此我们只需要重构 frmBaseChild 中的 IniAuthorize() 方法,就能修改权限名称了
protected override void InitAuthorize()
{
base.InitAuthorize();
// 设置Ex01的权限名称
SetAuthorizeName(FunctionAuthority.EX_01, "布局调整");
}
5. 取消窗体的查看权限(不展示窗体)
WinFramework.UI.Dev.LibForm.frmBaseChild 中默认会给权限增加一个公共权限值=1,FunctionAuthorityCommon.FVIEW 访问权限。
/// <summary>
/// 查看
/// </summary>
internal const int FVIEW = 1;
/// <summary>
/// 当前窗体权限
/// </summary>
protected virtual int FormAuthorityAll
{
get
{
return FormAuthority | FunctionAuthorityCommon.FVIEW;
}
}
最后,我们重写该属性:
protected override int FormAuthorityAll => this.FormAuthority;