今天演示一下在框架下制作一个测试模块的过程
通过框架向导新建一个BPL模块
保存工程,习惯性地把DCP,BPL输入路径设置好,
用户自已编写的模块建议放到主程序的Module目录下,方便管理
新建一个默认窗体,然后修改窗体使其从ERPForm里的TfrmERPBase继承
先是修改源文件
type TForm2 = class(TfrmERPBase) //从ERPForm里的TfrmERPBase继承 private { Private declarations } public { Public declarations } end;
然后修改DMF文件,把object改为inherited,并清空自动生成的代码
inherited Form2: TForm2 end
最后得到如下图的窗体,经过这两步,从使得窗体从界面跟代码从TfrmERPBase继承
接下来做个简单的测试,摆放一个TCnAALabel和TButton控件
窗体代码如下
unit TestForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ERPBaseForm, CnAAFont, CnAACtrls, ActnList, StdCtrls; type TForm2 = class(TfrmERPBase) albl1: TCnAALabel; btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } class procedure OnClick(Sender:TObject); //添加类函数,用于菜单或按钮点击时调用 end; //事件唯一标识 const GUID_TEST='{161B9D0E-53BA-4277-8A47-EDE37E23BE9A}'; var Form2: TForm2; implementation uses _Sys; //添加这个引用可以方便地调用系统接口 {$R *.dfm} { TForm2 } procedure TForm2.btn1Click(Sender: TObject); begin Sys.MessageBox.ShowMessage('Hello','TEST'); //调用了系统的消息提示接口 end; class procedure TForm2.OnClick(Sender: TObject); begin //调用主程序的窗体创建接口,由主程序来创建自己 Sys.Form.CreateForm(TForm2); end; initialization //添加事件注册 Sys.EventManage.RegistEvent(GUID_TEST,TForm2.OnClick); end.
编译,这就生成了一个能被框架调用的模块
然后进入系统模块加载设置
将做好的模块添加进去,这样系统启动时就会加载
再把功能注册一下
这里的唯一标识符就是在窗体代码里的设置好的
绑定功能到菜单
重开软件,点菜单 测试3,运行效果如下