前面4篇文章给大家介绍了该插件框架的原理,今天给大家介绍利用框架来开发自己的软件,非常方便。喜欢的朋友请关注,并私发信息框架5,会给大家奉上今天的示例代码。后面介绍完成,会奉上整个框架的源码。
今天我们基于插件开发的功能就是对CUSTOMERS数据表的展示功能(数据的访问用了ELINQ,如果不熟悉的朋友可以用你熟悉的任何工具都可以,在上面有一个按钮customers,具有图标,若中心区已展示该数据,则该按钮不可用(灰色),否则为可用。左侧的导航栏中也增加快速按钮,和上面的按钮具有一样的功能。
![7b57f5fedfc5767770caa7621d163c26.png](https://i-blog.csdnimg.cn/blog_migrate/ab14dfda729cfad0c9af80732b199c2e.jpeg)
开发的功能
首先在解决方案中新增一个项目:NorthWind(类库项目),然后新建类文件:NorthWindCommand.cs,该类对应功能按钮。
namespace NorthWind
{
class NorthWindCommand:td.Core.AbstractToolButtonCommand
{
public override void Run()
{
var p = WorkBenchSingleTon.WorkBench.GetTabPage("Customers");
if (p == null)
{
NorthWindView view = new NorthWindView();
WorkBenchSingleTon.WorkBench.AddView(view);
}
}
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;
}
}
}
}
从上面的代码可以看到,NorthWindCommand类继承于td.Core.AbstractToolButtonCommand,同时有一个覆写的函数Run,就是该按钮在被按下时需要执行的功能。在其中首先判断是否有一个名字叫做COUSTOMERS的TAB,如果没有,就创建它,否则什么都不用做(当然如果要完善一点,可以再判断该tab页是否处于最前,如果没有,就把他显示到最前,框架中提供有相应的API,可以直接调用)。
还有一个IsEnabled属性,用于设置该按钮什么时候有效,什么时候无效,可以看到示例中使用了2个条件,一是当前没有创建CUSTOMERS页面,同时还要具有相应的权限该按钮才有效。
回头来看如何创建TAB页面:
namespace NorthWind
{
class NorthWindView:td.Core.AbstractViewContent
{
NortWindControl control = new NortWindControl();
public override DevExpress.XtraEditors.XtraUserControl ViewContentControl
{
get { return control; }
}
public override string Title
{
get
{
return "Customers";
}
set
{
base.Title = value;
}
}
}
}
创建了一个NorthWindView,继承于AbstractViewContent,所有的TAB页面的内容展示,必须继承于该类,但是该类只会创建空的TAB,具体的控件由它的一个属性:ViewContentControl来确定,这个属性其实是一个自定义的控件,所以在这个TAB中实际只有一个控件,但是一个控件肯定无法满足我们的需求,所以这里一般都会是自定义控件,我们想怎么做就怎么做,具体可以参考代码,同时这个控件也是PUBLIC的,可以供其它的插件来访问。他还有一个Title属性,就是这个TAB页面的名字,用于框架区分每个TAB,即前面介绍到的判断是否有这个TAB,就是根据这个名字来确定的。
然后再创建自定义控件NortWindControl,画好后,在里面实现相应的数据显示就可以了(具体如何显示请大家自行实现,当然源码中也有相应的例子)。至此,我们的代码就结束了。
最后编译生成的DLL,将其放到框架文件夹中(OUTPUT目录),运行程序,并不会出我们期望的界面,还差配置插件,
打开软件,选择配置,选择运行时库,就是我们生成的DLL文件(功能所在的DLL),选择下面的添加按钮,找到DLL,添加即可,此时会在上面的列表中显示出来该DLL。
![dad81c08b20b7ade190393e9b1c0153e.png](https://i-blog.csdnimg.cn/blog_migrate/32c407f9dab87eeed8f55017c03a6b9d.jpeg)
然后定位的工具按钮,选择新建,输入相应的信息,图标等,注意执行类必须包含完整的命名空间,当然程序中有处理,可以自己选择,点击浏览,会弹出选择对话框,选择我们生成的DLL,然后会自动反射出相应的类,选择功能按钮类,一般我们都取名为COMMAD,点击保存修改。注意不要选择新建保存,因为新建保存的功能是为了复制一个功能,然后进行修改时用的,请大家自行摸索一下吧。
![4df061257fe7296c444215254fa7ab02.png](https://i-blog.csdnimg.cn/blog_migrate/49cfef48b4b0850b2abda3c82faedd6f.jpeg)
完成以上步骤后,保存配置,保存到框架目录下的addins.xml,这个文件是固定的,不能修改,关闭软件,重新打开软件,就会出现相应的按钮了。当然也可以直接修改配置文件,如果大家熟悉后,要添加多个功能时,直接在这个文件中进行修改会更快。
至此我们就完成了该功能的开发。示例代码中还有增加了一个PAD,功能,他可以获取到选中的列表中的行的信息。但是不需要修改框架和展示数据的插件的任何一行代码,就可以增加新的功能。如果大家需要,我可以单独写一篇介绍一下。
请喜欢的朋友关注我,私发信息框架5,获取今天的示例代码。如果有什么不清楚的可以留言。