今天演示一下在框架下制作一个测试模块的过程
通过框架向导新建一个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,运行效果如下