文件名称:插件开发框架(含开发示例源码,权限管理源码,开发说明文档,基于DevExpress控件)
文件大小:16.69MB
文件格式:RAR
更新时间:2021-04-15 16:41:24
插件 源码 说明 Devexpress
1.系统特点
本插件框架实现了界面与逻辑的解偶,从此告别在代码中到处判断工具栏上按钮的使能,同时在不修改系统已有代码的前提下也能实现向系统中增加功能即符合开放-封闭原则,避免在扩展新功能时需要大量修改已有代码,从而又引入了新的BUG,且各模块可以相对比较独立,多人同时开发,从而实现快速开发。
2.运行体验
如果你看到本文档说明你已成功下载了本插件框架的运行包和示例源码,请确保你的电脑安装了.net framework4.0,以及ACE引擎(通过OLEDB访问ACCESS数据库,一般安装了OFFICE以后即具有此引擎)。
运行步骤:(1)将压缩包解压
(2)进入OUTPUT目录,直接运行MainForm.exe文件,输入用户名:admin,密码为空,点击登录即可进入软件。
进入软件后,系统会自动打开Customers数据库信息,该界面显示Customers数据库的列表。工具栏上方还有配置、权限管理两个主要功能页面,其主要功能如下:
配置:本功能页面主要实现的功能是插件的配置,用于配置插件运行的DLL,系统的名称,插件所包含的功能按钮(在DLL中可以包含多个插件,如果在配置文件中没有配置,系统也不会显示出来),包括工具页面,每个工具页面可以包含多个按钮。也可以设置某个功能插件能够自动运行(即打开软件直接打开工功能,如Customers数据库即是被定义为自启动的示例),PAD面板(示例中的测试面板)。
权限管理:权限管理实现了基本的权限管理包括用户管理,用户权限,角色管理,角色权限。特点在于不光能根据角色分配权限,也能对用户单独分配临时权限。
3.开发环境
要编译运行本示例源码请确保你的计算机上已安装:
Visual studio 2010
.net framework4.0
DevExpress11.1.6(编译需要安装此包,运行只需要包含相关的DLL文件,已在本包中包含)
解压压缩包,使用visual studio2010打开文件夹中的td.Addin.sln工程文件,点击运行,即可自动编译,如果提示LC.EXE已退出错误,请再次确认你已安装了DevExpress11.1.6。
4.开发体验
任务:向系统中增加一个功能:在customers的工具栏增加一个显示详情按钮,点击此按钮弹出对话框显示当前选中行的信息。本示例展示如何在不修改原有代码的情况下增加功能。
步骤:1.在解决方案中增加一个类库工程:EditNorthWindForm
2.向该工程增加引用:引用位于OUTPUT文件夹中的NorthWind.dll td.Core.dll td.Security.dll 以及所有以DevExpress开头的文件(由于界面使用了DEV控件,所以必须引用) ,添加.NET 的文件System.Drawing System.Windows.Forms。
3.向工程中增加窗口文件:EditNorthWindForm.cs,在工程上点右键,选择添加窗口,如下:
然后将窗口绘制成需要的样式,如增加TEXTBOX等。
将代码修改为:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using td.Core;
namespace NorthWind
{
public partial class EditNorthWindForm : DevExpress.XtraEditors.XtraForm
{
public EditNorthWindForm()
{
InitializeComponent();
CenterToScreen();
var view= WorkBenchSingleTon.WorkBench.GetTabPage("Customers");
if (view != null)
{
var control = view.ViewContentControl as NorthWind.NortWindControl;
if (control.gridView.gridView1.GetSelectedRows().Length > 0)
{
var selectedHandle = control.gridView.gridView1.GetSelectedRows()[0];
var c = control.RowToCustomers(selectedHandle);
LoadData(c);
}
}
}
void LoadData(Customers sender)
{
Customers c = (Customers)sender;
this.textEdit1.Text = c.ContactName;
this.textEdit2.Text = c.CompanyName;
this.textEdit3.Text = c.Address;
this.textEdit4.Text = c.City;
}
}
}
在构造函数中,首先将该对话框居中显示,然后通过插件系统提供的API函数获取Customers窗口是否存在,若存在则获取相应的数据并传给LoadData函数显示。如不存在,则不显示(实际上我们会在调用本窗口的代码中进行控制)。
3.显示本对话框:通过前面的代码,系统并不能显示出所需要的对话框,还需要相应的代码来执行本功能。所以向该工程增加类:EditNorthWindCommand.cs,其代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using td.Core;
using System.Threading;
using td.Security.Principal;
namespace NorthWind
{
class EditNorthWindCommand:td.Core.AbstractToolButtonCommand
{
public override void Run()
{
var p = WorkBenchSingleTon.WorkBench.GetTabPage("Customers");
if (p != null)
{
EditNorthWindForm view = new EditNorthWindForm();
view.ShowDialog();
}
}
public override bool IsEnabled
{
get
{
CustomPrincipal cp = (CustomPrincipal)Thread.CurrentPrincipal; ;
bool r = (cp.IsAuthorized("Test 1") || cp.IsInRole("Admin"));
return r&&( null!= WorkBenchSingleTon.WorkBench.GetTabPage("Customers"));
}
set
{
base.IsEnabled = value;
}
}
}
}
在上面的代码中:Run函数是向系统添加的按钮所需要执行的代码;属性IsEnabled是用于控制本功能按钮的状态,如果本属性为真,则按钮可以,否则不可以。在本示例中要求用户具有Test 1权限或者属于Admin角色,同时Customers界面已打开。
4.向系统添加本功能按钮:虽然已开发了界面,同时也有了显示界面的代码,但是系统并不知道已经增加了本功能,所以需要向系统增加本功能:
步骤:(1)打开本项目的属性→生成→输出路径→浏览,选择OUTPUT文件夹。将本DLL文件生成到软件的目录。点击生成项目。
打开OUTPUT文件夹中addins.xml找到