[概述]

抱歉由于上次开源比较匆忙,没有来的及做一个DEMO,里面也有些垃圾的文件没有及时清理。DEMO其实昨天晚上已经调通。相关说明文档今天晚上才说明好,欢迎大家继续关注和交流,和大家一起分享我10多年的管理软件框架开发经验,后续会完善更多相应的有用的插件,供大家直接使用。

[DEMO图片预览]

[MDI-DEMO-BIN文件说明]

编译好的文件打包存放于根目录下面,文件名为:MDI-DEMO-BIN.zip,采用XE5编译,使用标准控件,其他版本编译myBeanConsole.exe和plugin-demo-form工程就好,记得这两个工程需要带包,beanMananger.dll可以通用。不需要编译。

myBeanConsole.exe
   --主控台EXE,包含主窗体(带包编译)

myBeanConsole.config.ini

   --配置文件,包含是否使用缓存目录,是否预加载DLL,等配置

demoBeans.plug-ins

   -- bean的配置文件,可以多个,有主配置文件指定目录(可以通配符),参考主配置文件说明

beanManager.dll

   -- 框架核心DLL文件,由plug-ins-core\beanMananger提供,标志的Windows DLL文件,不需要带包编译,所有Delphi版本可以使用。

rtl190.bpl

vcl190.bpl

--XE5 运行包文件(由于使用XE5编译的)

plug-ins\plugin_form_demo.dll

   -- DEMO DLL(带包编译),注册了aboutForm插件和demoPluginForm插件

[主配置文件说明]

主配置文件文件名: EXE文件名+config.ini,或者app.config.ini

[main]

;加载时插件缓存(放入临时目录)

;true时copy到临时缓存目录进行加载, false插件目录进行加载

;默认为true值

plug-ins-cache=1

;插件临时目录,支持相对路径(EXE目录的相对路径),绝对路径(c:\temp\

;默认为plug-ins-cache

plug-ins-cache-path=temp-files

;加载DLL在启动程序的时候

;默认为true

loadOnStartup=0

;加载bean配置文件目录(相对路径(EXE目录的相对路径),绝对路径(c:\config\*.*)

;没有配置时,直接加载DLL,从DLL中获取PluginID

;<none>时不加载任何DLL插件

beanConfigFiles=*.plug-ins,plug-ins\*.plug-ins,beanConfig\*.plug-ins

;加载文件时记录日志;

;默认为false, 为true时可以从日志文件(log\loadDLL_trace.txt)便于查看到哪个文件加载失败

traceLoadLib=1

[bean配置文件说明]

配置文件可以单个也可以多个,存放路径由主配置文件指定

beanConfigFiles=*.plug-ins,plug-ins\*.plug-ins,beanConfig\*.plug-ins

上面配置指定了根目录的*.plug-ins文件和plug-ins目录下的*.plug-ins文件…

这样便于多人协作编写模块,文件采用JSON格式。

格式与说明

{

   list:

[

{

"id":"frame-core",

"pluginID":"frame-core",           //如果与id一致可以进行忽略(同一个插件可以配置成多种bean)

"lib":"plug-ins\\plugin-demo-form.dll",        //文件名<插件存放的DLL文件>

"singleton":true,                      //是否单件模式(比如远程数据访问插件,可以单件模式)

}

]

}

[plugin-demo-form源码分析]

工程文件(提供了插件的注册,也可以写到窗体文件的initialize部分)

library plugin_form_demo;

uses
SysUtils,
Classes,
uBeanFactory,
ufrmAbout in '..\..\Forms\ufrmAbout.pas' {frmAbout},
ufrmPluginForm in '..\..\Forms\ufrmPluginForm.pas' {frmPluginForm},
uBasePluginForm in '..\..\Service\uBasePluginForm.pas'; {$R *.res} begin
beanFactory.RegisterBean('aboutForm', TfrmAbout);
beanFactory.RegisterBean('demoPluginForm', TfrmPluginForm);
end.
 
ufrmPluginForm.pas,很简单新建一个vclForm,然后把TForm改成了TBasePluginForm(实现了IpluginForm的窗体类)
type
TfrmPluginForm = class(TBasePluginForm)
mmo1: TMemo;
pnlOperator: TPanel;
btnCreateAsModal: TButton;
procedure btnCreateAsModalClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

[MyBean交流]

考虑了下,还是新建个群,方便讨论

群:205486036

源代码地址

https://git.oschina.net/ymofen/delphi-framework-MyBean

最新文章

  1. java ArrayList 实现
  2. SQLServer子查询
  3. POJ 1844 Sum
  4. The 11th Zhejiang Provincial Collegiate Programming Contest-&gt;Problem G:G - Ternary Calculation
  5. int *p[4]与int (*q)[4]的区别
  6. 手动打包MVC项目成Web Deploy包,发布至服务器
  7. “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift
  8. Volterra方程的不动点
  9. 用Delphi制作动态菜单 该文章《用Delphi制作动态菜单》
  10. tflearn 实现DNN 全连接
  11. R软件中 文本分析安装包 Rjava 和 Rwordseg 傻瓜式安装方法四部曲
  12. ASP.NET#LinqDataSource控件配置对象模型时遇到的问题
  13. java---Map接口实现类
  14. Every derived table must have its own alias
  15. iOS 从0到1搭建高可用App框架
  16. pytest 运行指定用例
  17. C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货)&lt;转&gt;
  18. webpack坑系列--安装webpack-cli
  19. 879C
  20. iOS怎么判断字典中存在nil值

热门文章

  1. Silverlight for Windows Phone开发系列课程
  2. JavaScript 字符串(String)对象
  3. eclipse安装activiti designer
  4. ubuntu(14.04) 网路管理
  5. librbd 分析
  6. Android 桌面部件
  7. ASP.NET MVC4中的App_start中BundleConfig的介绍使用
  8. 【Spring】Spring之事务处理
  9. codesmith连接postgresql修复bug
  10. 【C语言】练习1-20