博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Management Console 工具管理类软件通用开发框架(开放源码)
阅读量:6799 次
发布时间:2019-06-26

本文共 1889 字,大约阅读时间需要 6 分钟。

做ERP/MIS之类的软件,通常会开发一些辅助工具来加速开发,比如代码生成器,数据字典生成工具。随着时间的积累,这类小工具会越来越多,虽然开发的速度会快,方便,但是也会因为找不到,不好查找这些小工具,产生麻烦。原因很简单,已经发了很多精力去做成了工具,自然就不会考虑用很原始的方式来完成任务。

举例说明

对于插件式的开发,我们通常会先做好界面功能,然后把这个功能添加到系统的功能列表中,以启用功能,为完成这个目的,可以采用如下的SQL脚本来完成

INSERT System_Function(Module,Function,Description)

    VALUES(‘Inventory’,'ICMISR’,'Inventory Receipt’)

这样,就把新做好的进仓单功能加到系统功能中,以启用功能。

但情况通常没有这样简单,通常还要设置有哪些用户和角色有权限执行进仓功能,等等。

一种改善的办法,是把这些功能都做成脚本文件,一次调用就完成功能增加,权限分配的任务

如上图,就产生了这么一个小工具. 这是很简化的情况。

 

我要讲述的主题是,当积累了很长时间,手头有很多这样的小工具,如何把它们整合到一个容器中,方便调用。

先看效果图,边看图边说

 

如图所示,在这里,我集成诸多工具,比如

DataSet Reader 用于读取dataset的工具

Translation  多国语言的翻译工具,

StringBuilder 字符串构造工具,例如,我想把SQL语句
                    SELECT  FunctionCode FROM  dbo.AuditTrail   转化成字符串,以传递到SQL Server中

 

为了集成进仓单的功能到这个工具中,需要如下处理

修改窗体的继承基类为FormBase,给窗体类添加FunctionCode的特性,这个特性用于反射查找这里的窗体

修改ListItem.xml文件,增加一个Item项,如图所示

内容是

<Item Index="10" Text="InventoryReceipt"  Tag="Inventory Receipt" ImageIndex="35"></Item>

ListItem的内容,就是效果图中,要显示在Task List任务框中的内容,Text是标题,Tag是功能的FunctionCode的值,ImageIndex是图像的索引。

其实,这里还可以做更多的控制。比如,如果没有功能的源代码,需要用反射的方式去call功能所在的程序集,为实现这个目的,还需要增加Item.Assembly以指向它所有的程序集;

如果功能的源代码不是.NET代码所写,要支持Process.Start的方式启动工具,必要时还需要增加参数。

 

再进入源代码,看看这个工具是如何构造的

MainForm是主窗体,这里采用的是Infragistics2.Win.UltraWinTabbedMdi组件,取代过时的MDI窗体组织形式,

NewProject是Task List任务窗体,这是功能显示的集成项目,Ctrl+N启动这个窗体,ListItem.xml是它的配置项

主窗体中的其他菜单,均没有使用

Startup是启动时显示的主窗体,在这里,可以显示一些常见工具的快捷方式

为了获取和Office 2007一样的蓝色主题效果,可反注释如下的代码

ToolStripManager.Renderer = new WinUI.Misc.Office2007Renderer();

statusStrip.Renderer = new WinUI.Misc.Office2007Renderer();

菜单和状态栏的效果如下图

反射应用于查找窗体的特性,找出它的定义,显示出来,代码框架如下

Assembly assembly = Assembly.GetExecutingAssembly();

object entryForm = Activator.CreateInstance(formBaseType) as Form;

entryForm .MdiParent = this;

entryForm .Show();
entryForm .Activate();
这便是这个工具,最有价值的内容。也达到了开头提出的效果,只开发功能和配置ListItem文件,确实达到插件的目的.

请到epn.codeplex.com上获取最新的源代码,请使用Visual Studio 2008编译。

因图中提及的部分插件工具已经应用到实际生产中,恕不提供源代码下载。

转载地址:http://kyuwl.baihongyu.com/

你可能感兴趣的文章
hibernate框架
查看>>
MapperScannerConfigurer
查看>>
下载本 WebEnh博客 安卓APP
查看>>
UNIX环境高级编程——守护进程列表
查看>>
linux物理内存探测
查看>>
Facebook的Pop动画库相关资料
查看>>
Mac: the original hosts
查看>>
UIButton
查看>>
UITabBarController
查看>>
Java中有关Null的9件事(转)
查看>>
PE文件格式与API HOOK
查看>>
Angular7.1.4+Typescript3.1框架学习(三)
查看>>
第十一次作业 - Alpha 事后诸葛亮(团队)
查看>>
LeetCode(125):Valid Palindrome
查看>>
【241】◀▶IEW-Unit06
查看>>
SQL Server 函数执行
查看>>
Oracle 字符串处理函数
查看>>
中国银行涉嫌洗黑钱却另有隐情?
查看>>
排序问题分析
查看>>
【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(9) 角色管理,分配权限...
查看>>