程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> [開源項目-MyBean輕量級配置框架] 使用MyBean快速搭建分模塊的應用程序(主頁面的TAB)(DLL-MDI)

[開源項目-MyBean輕量級配置框架] 使用MyBean快速搭建分模塊的應用程序(主頁面的TAB)(DLL-MDI)

編輯:Delphi

[概述]

     抱歉由於上次開源比較匆忙,沒有來的及做一個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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved