上一页 1 ··· 149 150 151 152 153 154 155 156 157 ··· 203 下一页
摘要: 在插件中需要对接口中的方法进行具体的实现,主控程序才能调用并执行插件中的具体功能。unit uPlug;interfaceuses uInterface, Forms, Windows, Classes, SysUtils;type TModelService = class(TInterfacedObject, IModelInts) private function CheckFormExists(aClassName: pchar): Boolean; public procedure Cmd(aClassName: PChar); // create visual plugin pro 阅读全文
posted @ 2012-02-19 17:20 delphi中间件 阅读(939) 评论(1) 推荐(1)
摘要: 使用TRzMenuController控件只是为了增加主菜单的皮肤效果,可清除此控件主控程序的主窗口单元要实现的需求如下:1.自动识别并加载各个已经注册的插件;2.自动识别并加载各个已经注册的插件中的各个模块(自动生成系统的主菜单,自动生成各菜单项的点击事件);unit uMainForm;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus, Loader, Buttons, uInterface, 阅读全文
posted @ 2012-02-19 17:16 delphi中间件 阅读(1279) 评论(0) 推荐(0)
摘要: 主控程序和各插件之间通过预约的接口进行交互,这就是为什么主控程序能够自动识别插件的原因,因为主控程序和各插件早已经预约了接口。主控程序调用插件中的导出函数,取得导出函数的返回值,这个返回值返回的是某一个接口。一个导出函数的返回值可以返回一个接口,多个导出函数就可以返回多个接口。接口里面定义了许多的方法,通过接口可以调用到它里面的某一个方法,即调用了插件里面的某一项功能。插件框架里面可能需要定义多个接口,按照某一个原则对这些接口进行分类。比如日志操作接口,数据操作接口,权限操作接口。。。。。。可以在一个单元中集中定义插件框架中需要使用到的接口,然后在主控程序和各插件里面都要引用这个接口定义的单元 阅读全文
posted @ 2012-02-19 17:15 delphi中间件 阅读(977) 评论(0) 推荐(0)
摘要: 获取插件中的预约接口,调用预约接口中的方法执行插件中某一项功能。unit Loader;interfaceuses DLLLoader, uInterface, SysUtils, Classes, windows;type TLoader = class(TDLLLoader) private FInts: IModelInts; function GetInts: IModelInts; public destructor destroy; override; property ModelServiceInts: IModelInts read GetInts; end;implement 阅读全文
posted @ 2012-02-19 17:14 delphi中间件 阅读(846) 评论(0) 推荐(0)
摘要: 对于DELPHI来说,总共支持俩种类型的插件:DLL和BPL方式的插件。对于比较完美的插件框架来说,俩种类型的插件都要支持。unit DLLLoader;interfaceuses windows, Classes, SysUtils, Forms, StrUtils;type TLibraryType = (dll, bpl); // plugin type: dll or bpl TDLLLoader = class(TObject) private FHandle: THandle; FFileName: string; FLibraryType: TLibraryType; proce 阅读全文
posted @ 2012-02-19 17:12 delphi中间件 阅读(1072) 评论(0) 推荐(0)
摘要: .net类库的原因。C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG下面的machine.config.default 改名为machine.config 阅读全文
posted @ 2012-02-12 07:42 delphi中间件 阅读(814) 评论(4) 推荐(0)
摘要: //author: cxg//sql工厂unit MySQL;interfaceuses SysUtils, SqlExpr, DBClient, db, DBXCommon,Provider;type TMySQL = class(TObject) private fSqlcommand: string; fQry: TClientDataSet; fSqlMethod: TSqlServerMethod; fSqlConnection: TSQLConnection; fDbxTrans: TDBXTransaction; fP:TDataSetProvider; fD:TClientDa 阅读全文
posted @ 2012-02-12 07:18 delphi中间件 阅读(1185) 评论(0) 推荐(0)
摘要: xe datasnap自动支持TParams对象的序列,无需我们手动序列,真的很方便。远程方法定义示例:function TServerMethods1.GetData(sql: string; params: TParams): TDataSet;begin cds.Close; cds.CommandText := ''; cds.CommandText := sql; cds.Params.Clear; cds.Params := params; cds.Open; Result := cds;end;客户端远程调用示例:function TMySQL.GetData: 阅读全文
posted @ 2012-02-12 07:16 delphi中间件 阅读(981) 评论(1) 推荐(0)
摘要: //author: cxgunit DSServerContainer;interfaceuses SysUtils, Classes, IniFiles, Windows, Provider, DBClient, DSTCPServerTransport, DSServer, DSCommonServer, DB, ADODB, Generics.Collections, DSService, DBXDataSnap, DBXCommon, DSHTTPLayer, DBXinterbase, forms, DbxCompressionFilter ,IdTCPConnection ,IdW 阅读全文
posted @ 2012-02-12 07:09 delphi中间件 阅读(2147) 评论(3) 推荐(0)
摘要: 回调除了用REST支持调用DataSnap服务方法外,JSON还用于实现回调方法.DataSnap2010支持客户端回调函数,使其执行在服务方法上下文中.这样就可以实现客户端调用服务端方法时,服务端就可以调用由客户端传递好参数的回调函数.例如,我们修改EchoString方法,向其中添加回调支持.修改后的EchoString方法如下:function EchoString(Value: string; callback: TDBXcallback): string;TDBXcallback类定义在DBXJSON单元.在我们实现EchoString方法前,先搞清楚如何在客户端定义回调函数(毕竟, 阅读全文
posted @ 2012-02-11 22:12 delphi中间件 阅读(1259) 评论(0) 推荐(0)
上一页 1 ··· 149 150 151 152 153 154 155 156 157 ··· 203 下一页