zoukankan      html  css  js  c++  java
  • [开源项目-MyBean轻量级配置框架] 使用MyBean快速搭建分模块的应用程序(主页面的TAB)(DLL-MDI)

    [概述]

         抱歉由于上次开源比较匆忙,没有来的及做一个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-coreeanMananger提供,标志的Windows DLL文件,不需要带包编译,所有Delphi版本可以使用。

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

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

    [主配置文件说明]

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

    [main]
    ;加载时插件缓存(放入临时目录)
    ;true时copy到临时缓存目录进行加载, false插件目录进行加载
    ;默认为true值
    plug-ins-cache=1

    ;插件临时目录,支持相对路径(EXE目录的相对路径),绝对路径(c: emp
    ;默认为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时可以从日志文件(logloadDLL_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 '....FormsufrmAbout.pas' {frmAbout},
      ufrmPluginForm in '....FormsufrmPluginForm.pas' {frmPluginForm},
      uBasePluginForm in '....ServiceuBasePluginForm.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

  • 相关阅读:
    Oracle中快速查找锁与锁等待
    Oracle查看、修改连接数
    内置数据类型
    代码片段一
    设计模式学习四:依赖倒置原则
    队列
    设计模式学习六:代理模式
    linux 自学系列:一直kill掉多个进程
    设计模式学习五:装饰器模式
    通过__metaclass__为类动态增加方法实例
  • 原文地址:https://www.cnblogs.com/DKSoft/p/3738029.html
Copyright © 2011-2022 走看看