ERPSYSTEM开发教程03 DEMO程序开发过程

DEMO程序说明

提供了两个演示接口

IBplOne=interface
    [‘{E4C1C5FA-C598-4834-9111-26B52634068D}‘]
    function Add(A,B:Integer):integer;
    function Sub(A,B:Integer):Integer;
  end;

IDllOne=interface
    [‘{0434DE04-07C9-4623-9009-CF7892768431}‘]
    function GetString:string;
    procedure SetString(const Str:string);
  end;

这里演示了主窗体调用接口IBplOne,调用Dll和BPL里的窗体

Dll窗体调用了IBplOne接口和IDllOne接口,BPL窗体调用了IDllOne接口

其中IBplOne采用接口工厂创建,IDllOne采用单实例工厂创建,所以在Dll窗体调用接口IDllOne与BPL窗体调用接口IDllOne是同一实例

开发步骤

主程序

将工程文件里的Forms替换为uTangramFramework,同时把核心包Tangram_Core加入运行库

如果是通过IDE向导创建的主程序,则这两个步骤就已经做好的了

模块

一个模块要被框架所调用必须引用框架包,同时定义一个TMoudle子类和一个GetModuleClass导出函数,采用向导创建模块这些都会自动创建

Type
  TUserModule=Class(TModule)
  private
  public
    Constructor Create; override;
    Destructor Destroy; override;

    procedure Init; override;
    procedure final; override;
    procedure Notify(Flags: Integer; Intf: IInterface); override;

    class procedure RegisterModule(Reg:IRegistry);override;
    class procedure UnRegisterModule(Reg:IRegistry);override;
  End;

initialization
  //模块子类注册
  RegisterModuleClass(TUserModule);
finalization
//模块导出函数
Exports
  InstallModule,
  UnInstallModule,
  GetModuleClass;

然后在包里创建接口定义文件,一般我们把对外开放的接口放到一个公共目录,并加入Delphi搜索路径,这样其它工程也能引用到

unit BplOneIntf;
{$WEAKPACKAGEUNIT ON}

interface

type
  IBplOne=interface
    [‘{E4C1C5FA-C598-4834-9111-26B52634068D}‘]
    function Add(A,B:Integer):integer;
    function Sub(A,B:Integer):Integer;
  end;

implementation

end.

并用向导来创建接口实现单元,接口实现单元会创建接口的实现类,接口实例创建函数,类厂

//接口实现类
Type
  TBplOne=Class(TInterfacedObject,IBplOne)//假设你的接口叫IXXX(以下同)
  private
  protected
  {IXXX}
    //这里加上你接口方法,然后按Ctrl+Shift+C,实现你的接口...
    function Add(A,B:Integer):integer;
    function Sub(A,B:Integer):Integer;
  Public
  End;

implementation

//接口实例创建函数

procedure Create_BplOne(out anInstance: IInterface);
begin
  anInstance:=TBplOne.Create;
end;

//类厂注册
var Factory:TObject;
initialization
  Factory:=TIntfFactory.Create(IBplOne,@Create_BplOne);
finalization
  Factory.Free;

这样模块的编写就完成了,接下来是接口调用

procedure TFrmMain.Button1Click(Sender: TObject);
var intf:IBplOne;
begin
  intf:=SysService as IBplOne;
  Edit3.Text:=
    IntToStr(  intf.Add(StrToInt(Edit1.Text),StrToInt(Edit2.Text))  );
end;

procedure TfrmBplOne.Button3Click(Sender: TObject);
var intf:IDllOne;
begin
  intf:=SysService as IDllOne;
  Edit5.Text:=intf.GetString;
end;

框架采用的是统一的接口调用,一个有定义类厂的接口,就可以通过  SysService as IXXX 的统一方式来调用

运行程序之前要把编译好的框架核心包Tangram_Core.bpl和框架配制工具ConfigTool.exe放到程序目录。

框架默认是采用从XML文件来自动加载模块的,通过框架配制工具,把做好的模块安装一下

视频教程地址:

ERPSYSTEM开发教程01     http://pan.baidu.com/s/1kT7Rb3D

ERPSYSTEM开发教程02     http://pan.baidu.com/s/11xN5s

框架源代码下载地址            http://pan.baidu.com/s/1jGIc2Su

DEMO源代码下载地址         http://pan.baidu.com/s/1bnyEafH

联系QQ:1330009208 (验证信息请填ERPSYSTEM)

时间: 2024-10-08 20:13:03

ERPSYSTEM开发教程03 DEMO程序开发过程的相关文章

ERPSYSTEM开发教程04 框架模块管理

从DEMO程序获知, 框架主程序工程文件里Forms替换为uTangramFramework, 每个模块都有一个TModule子类和一个GetModuleClass导出函数 那么框架是如何进行模块管理的呢? 我们先从模块入手 unit DllOnePlugin; interface uses SysUtils,Classes,uTangramModule,SysModule,RegIntf; Type TUserModule=Class(TModule) private public Const

ERPSYSTEM开发教程05 框架接口管理

框架接口是采用类厂来管理的 一个接口要被框架管理的实现步骤 首先是接口定义,接口实现类,接口实例创建函数,指定类厂 unit BplOneIntf; {$WEAKPACKAGEUNIT ON} interface type IBplOne=interface ['{E4C1C5FA-C598-4834-9111-26B52634068D}'] function Add(A,B:Integer):integer; function Sub(A,B:Integer):Integer; end; im

ERPSYSTEM开发教程01 框架介绍

从今天开始我将给大家带来一套有关Delphi开发的教程 主要开发ERP软件 我个人觉得,ERP软件的开发,技术层面的不是最大问题, 而是对客户需求的认知程度以及如何管理复杂多样的需求. 因此一个开发框架显得非常重要! 这里我推荐一套来自网络的开源框架 Tangram Plugin Framework 框架特点 1.采用模块化插件开发,支持DLL和BPL两种模块方式 2.自动或手动动态加载模块 3.模块与模块或主程序之间均使用统一的接口方式进行访问 源代码下载地址  http://code.goo

ERPSYSTEM开发教程02 框架安装

1.下载好Tangram后解压 2.把\framework目录下的DCP,Interfaces,Units添加到Delphi搜索目录 3.打开目录下的framework.groupproj项目工程组,该工程组有四个项目Tangram_Core.bpl ConfigTool.exe PackageRequries.exe IDEWiz.bpl 分别是框架核心包,框架配制工具,包引用查看工具,IDE向导.然后编译一下工程组,并把IDEWiz.bpl安装,这样就可以用向导来创建框架主程序或模块 框架源

100套最适合自学的实战开发教程视频(程序员都在学)

BAT大咖助力 全面升级Android面试 BAT大牛亲授 基于ElasticSearch的搜房网实战 从天气项目看Spring Cloud微服务治理 Java企业级电商项目架构演进之路  Tomcat集群与Redis分布式 Java深入微服务原理改造房产销售平台 SSM到Spring Boot-从零开发校园商铺平台 Java Spring Boot企业微信点餐系统 Java秒杀系统方案优化-高性能高并发实战 Spring Boot技术栈博客企业前后端 Java SSM快速开发仿慕课网在线教育平

微信公众号开发教程 微信小程序

PHP微信公众平台开发高级篇 http://www.imooc.com/u/197650/courses?sort=publish 微信小程序教程 .链接:http://pan.baidu.com/s/1slmAwDf 密码:ciry

Android快乐贪吃蛇游戏实战项目开发教程-03虚拟方向键(二)绘制一个三角形

该系列教程概述与目录:http://www.cnblogs.com/chengyujia/p/5787111.html 一.绘制三角形 在上一篇文章中,我们已经新建了虚拟方向键的自定义控件DirectionKeys类,下面我们继续. 本项目中的虚拟方向键的背景是4个三角形组成的矩形,其实是4个三角形的按钮. 系统自带的按钮是矩形的,怎么做一个三角形按钮呢? 首先我需要了解,所有控件的外观都是画出来的,当然不是我们手工去画而是用程序去画. 用程序怎么画呢? 很多技术平台上都有绘图功能,用起来也很相

XAF应用开发教程(四)应用程序模型

https://www.cnblogs.com/foreachlife/p/xafml.html XAF是重量型框架,确实够重量的,方方面面都做得规规矩矩. 如果看了前面三节,可能会认为,这N多的Attribute到底都是从哪里来的?到底有多少这样的Attribute?如果不够用了怎么办?等着官方开发吗? 好吧,我不是为了解决上面的这些问题的,从另一个角度来看一下我们的应用程序吧! 我们回过头来看看解决方案中的项目都是做些什么用途吧: XAF的默认项目结构中,XCRMDemo.Module中写了

黑马程序员:赶紧下载iOS10开发教程第二弹

虽然6月13日WWDC2016的发布会结束了,但是本届大会的开发者session环节还在持续进行着.黑马程序员本着对技术的狂热,对学生负责的态度,仍然坚持每天对课程进行深入的研发.本文主要是黑马程序员对iOS 10 中SDK所更新的主要内容进行总结.根据黑马程序员惯例,在文章的最后,有相关相关教学视频及Demo会有分享链接,供各位下载! 1.Grand Center Dispatch GCD 在本次一更新主要有以下内容: ?创建私有队列 ?安排异步执行的工作项目(items) ?GCD能自动将工