全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1038
推到 Plurk!
推到 Facebook!

ERPSYSTEM開發教程03 DEMO程序開發過程

 
erpsystem
一般會員


發表:4
回覆:1
積分:1
註冊:2013-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-01-14 20:00:25 IP:211.255.xxx.xxx 訂閱
DEMO程序說明

運行效果可看下附件DEMO.gif

提供了兩個演示接口

[code delphi]
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;
[/code]

這裏演示了主窗體調用接口IBplOne,調用Dll和BPL裏的窗體

Dll窗體調用了IBplOne接口和IDllOne接口,BPL窗體調用了IDllOne接口

其中IBplOne采用接口工廠創建,IDllOne采用單實例工廠創建,所以在Dll窗體調用接口IDllOne與BPL窗體調用接口IDllOne是同壹實例

開發步驟

主程序

將工程文件裏的Forms替換為uTangramFramework,同時把核心包Tangram_Core加入運行庫

如果是通過IDE向導創建的主程序,則這兩個步驟就已經做好的了

模塊

壹個模塊要被框架所調用必須引用框架包Tangram_Cor.dcp ,同時定義壹個TMoudle子類和壹個GetModuleClass導出函數,采用向導創建模塊這些都會自動創建


[code delphi]
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
[/code]



[code delphi]
//模塊導出函數
Exports
InstallModule,
UnInstallModule,
GetModuleClass;
[/code]



然後在包裏創建接口定義文件,壹般我們把對外開放的接口放到壹個公共目錄,並加入Delphi搜索路徑,這樣其它工程也能引用到


[code 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.
[/code]


並用向導來創建接口實現單元,接口實現單元會創建接口的實現類,接口實例創建函數,類廠



[code delphi]
//接口實現類
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;
[/code]


這樣模塊的編寫就完成了,接下來是接口調用


[code delphi]
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;
[/code]


框架采用的是統壹的接口調用,壹個有定義類廠的接口,就可以通過 SysService as IXXX 的統壹方式來調用

運行程序之前要把編譯好的框架核心包Tangram_Core.bpl和框架配制工具ConfigTool.exe放到程序目錄。

框架默認是采用從XML文件來自動加載模塊的,通過框架配制工具ConfigTool.exe,把做好的模塊安裝壹下,

啟動主程序,如DEMO.gif效果

如果需要DEMO源代碼,請留下EMAIL地址

附加檔案:54b65a5943606_DEMO.gif
系統時間:2017-12-11 9:57:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!