DLL插件

最近的一个项目需要将报表文件做成插件形式的!可以让用户远程更新下载,更新模块!

DLL中的数据连接是采用SockConnection连接方式的!大体设计如下:

TBaseForm:所有报表窗体的基类,private sc: TSocketConnection;子类能通过public getSc访问此连接!

UCommon:公共单元。由于DLL能导出函数或接口(不在本文章里讨论),所以导出函数的定义在此定义

每个模块只需引入此单元即可!

代码:

unit UCommon;

interface
uses UBaseForm, SConnect, Forms,  Dialogs;
type
  TBaseclass = class of TBaseForm;
procedure ShowDllForm(AHandle: THandle; sc: TSocketConnection); stdcall;
var myClass: TBaseclass;
implementation

procedure ShowDllForm(AHandle: THandle; sc: TSocketConnection); stdcall;
var
  form: TBaseForm;
begin
  try
    Application.Handle := AHandle;
    form := myClass.Create(Application);
    form.setSc(sc);
    form.ShowModal;
  finally
    form.Free;
  end;
end;
end.

TForm1: 实现类(子类)继承自TBaseForm,并不需要做最大的修改!只需回一句

initialization
  myClass := Tlky_frmallxm;//由于要得到类型,所以在此赋值,别的办法没想好,想在UCommon里应用

Application.MainForm得到主窗体类型,但却反回空值,可能是DLL机制的问题!!:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值