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

  • 相关阅读:
    桟错误分析方法
    gstreamer调试命令
    sqlite的事务和锁,很透彻的讲解 【转】
    严重: Exception starting filter struts2 java.lang.NullPointerException (转载)
    eclipse 快捷键
    POJ 1099 Square Ice
    HDU 1013 Digital Roots
    HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)
    HDU 1159 Common Subsequence
    HDU 1069 Monkey and Banana(动态规划)
  • 原文地址:https://www.cnblogs.com/DKSoft/p/3738029.html
Copyright © 2011-2022 走看看