Delphi生成即调用带窗体的Dll

创建简单的带窗体的Dll(Delphi7.0):

File>>New>>other>>Dll Wizard,新建Dll工程,File>>New>>Form在Dll工程中添加Form窗体。另存工程为frmDll.dpr和FormDll.pas。

先给出代码:

frmDll.dpr代码:

library frmDll;

uses
  SysUtils,
  Classes,
  Forms,
  FormDll in 'FormDll.pas' {Form1};


{$R *.res}
function GetDllForm:TForm;stdcall;export;//定义导出方法;
begin
  result:=frmDll; //函数返回类型为一个窗体;
end;
exports
  GetDllForm;//声明可导出的方法;
begin
end.


/

FormDll.pas代码:


unit FormDll;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageDlg('你已经成功调用了Dll控件',mtinformation,[mbOK],0);
end;
initialization //在单元中放在文件结尾前,包含用来初始化单元的代码,它在主程序运行前运行并且只运行一次
begin
  Form1:=TForm1.Create(Application);
end;
finalization//在单元中放在 initialization 和 end. 之间,包含了单元退出时的代码。程序退出时运行并且只运行一次。
begin
  Form1.Free;
end;
end.

///

编译好dll后新建工程application,在工程中调用dll;

工程代码如下:

unit testdll;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;


type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;
  function GetDllForm:TForm;
implementation


{$R *.dfm}
function GetDllForm:TForm;external 'frmDll.dll';  //声明从函数frmDll.dll中调用函数
procedure TForm1.Button1Click(Sender: TObject);
var
  AForm:TForm;
begin
  AForm:=GetDllForm;
  AForm.Show;
end;


end.





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值