[概述]

抱歉由于上次开源比较匆忙,没有来的及做一个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

[开源项目-MyBean轻量级配置框架] 使用MyBean快速搭建分模块的应用程序(主页面的TAB)(DLL-MDI)的更多相关文章

  1. [开源项目-MyBean轻量级配置框架] MyBean的特性和MyBean的开始

    [概述] 自从mBean框架出生后,受到很多朋友的关注,在公司的外包项目中得到了不错的应用.由于mBean是公司的项目,不便开源,于是这几天利用晚上的时间和周末的时间重写了底层beanMananger ...

  2. SSM(SpringMVC+Spring+MyBatis)三大框架使用Maven快速搭建整合(实现数据库数据到页面进行展示)

    本文介绍使用SpringMVC+Spring+MyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程. 技术选型:SpringMVC+Spring+M ...

  3. .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目

    系列目录     [已更新最新开发文章,点击查看详细] 开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激.尊重.请严格遵守每个项目的开源协议后再使用.尊 ...

  4. 腾讯正式开源高性能超轻量级 PHP 框架 Biny

    概况 Biny是一款高性能的超轻量级PHP框架 遵循 MVC 模式,用于快速开发现代 Web 应用程序 Biny代码简洁优雅,对应用层,数据层,模板渲染层的封装简单易懂,能够快速上手使用 高性能,框架 ...

  5. 开源项目之Android Afinal框架

    项目如图: 本文参考网络! Afinal是一个开源的android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少.在android应用开发中,通过Afinal的ioc框架,诸如ui绑定, ...

  6. 【开源项目13】Volley框架 以及 设置request超时时间

    Volley提供了优美的框架,使android程序网络访问更容易.更快. Volley抽象实现了底层的HTTP Client库,我们不需关注HTTP Client细节,专注于写出更加漂亮.干净的RES ...

  7. DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端

    最近头脑里面一直在想怎么样让能让大家基于DIOCP上写出稳定的服务端程序.很多朋友问我,你DIOCP稳定吗,我可以用他来做三层服务器吗? 当时我是这样回答的,我只能保证DIOCP底层通信的稳定. 说实 ...

  8. CentOS7下 简单安装和配置Elasticsearch Kibana Filebeat 快速搭建集群日志收集平台

    目录 1.添加elasticsearch官网的yum源 2.Elasticsearch 安装elasticsearch 配置elasticsearch 启动elasticsearch并设为开机启动 3 ...

  9. [DIOCP3/MyBean/QDAC开源项目] DataModule-DB例子基于MyBean的插件实例<三层数据库方案>

    [说明] 这个例子答应大家很久了,一直没有时间弄,现在正式结合MyBean插件可以很方便的在客户端共享操作连接,执行数据库的各项工作,屏蔽了底层的通信解码器编码等工作,直接传递Variant,给了开发 ...

随机推荐

  1. 【php】分享一个php转换微信、QQ、微博 特殊非主流 | 杀马特 网名的 function

    1.实现的效果: 2.将上面带有图标.非主流的文字,转换成utf-8格式,能存进去和读出来. 3.code: function emoji_encode($nickname){ $strEncode ...

  2. 【jquery】多日期选择插件easyui date

    1.本次介绍一个好用的 多日期选择插件:EasyUI date,适用于:需要一次性选择多个日期,无需手动一个一个进行添加. 2.效果图: 3.下载地址:http://www.jeasyui.com/d ...

  3. ios用户登录记住密码

    登录 记录已登录用户步骤,存入偏好设置中存储放入一个数组. 具体存储 :存储用户到偏好设置中,其中用户是一个数组 向服务器响应客户端后的一些操作 (如果响应数据成功)其中用户和密码是一一对应的 .1先 ...

  4. (原)linux下caffe模型转tensorflow模型

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/7419352.html 参考网址: https://github.com/ethereon/caffe- ...

  5. android开发学习---linux下开发环境的搭建&& android基础知识介绍

    一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...

  6. librbd 分析

    一.概述

  7. golang下划线(underscore) 总结

    一.概述 "_" 可以简单理解为赋值但以后不再使用,在golang中使用的比较多,使用的场合也很多,稍作总结: 二.场景 1.import import _ "net/h ...

  8. 《JAVA与模式》之备忘录模式

    一.备忘录(Memento)模式结构 备忘录对象是一个用来存储另外一个对象内部状态的快照(snapshot)的对象.备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉住,并外部化,存储起来, ...

  9. xtrabackup-增量备份

    增量备份之所以能工作是因为每个innodb的page都包含日志序列号(LSN).LSN是整个数据库的版本号. 增量备份会拷贝那些LSN比备份开始时新的页.有两种算法用来计算查找这些页:第一种,支持所有 ...

  10. RDLC 设置表的重复标题行(在每页中显示标题行)

    在Tablix 属性对话框中勾选“在每一页上重复标题行”及“滚动时保持标题可见”结果没有用. 如果您使用的是一个“表”式布局,有一个简单的方法,可以尝试以下四个步骤: 1.在分组窗格中,单击窗格上的小 ...