第二节 DLL 中的Delphi窗体
一、在DLL 中放置窗的的方法
在DLL 中,除了放置标准的函数和过程以外,也可以放置
已经做好的的delphi窗体,也可以把做好的窗体供其它程序使
用,方法是:
1)首先按普通方法制作窗体,不过在interface区域,对接
口函数做如下声明
function Createform(capt:string):string;stdcall;
2)在implementation下加入接口函数
function Createform(capt:string):string;stdcall;
var Form1: TForm1;
begin
form1:=Tform1.Create(application);
form1.show;
form1.caption:=capt;
end;
3)制作DLL 动态连接库,但要声明:
uses
unit1 in ‘unit1.pas’;
exports
{写入接口标示符}
Createform name ‘Myform’;
4)调用窗体的程序按普通方法制作,但是 在implementation下首
先声明要调用的DLL函数
const
gdi32=’myFormdll.dll’;
function Createform(capt:string):string;stdcall;external gdi32 name ‘Myform’;
procedure TForm3.Button1Click(Sender: TObject);
var n,m:string;
begin
m:=’我的窗体’;
Createform(m);var n,m:string;
end;
二、DLL 中的调用窗体时的数据传递
在窗体调用时,可以用普通的函数方法传递数据,下面举个例子。
1)建立窗体
做一个改变颜色窗体,放在DLL 中,可以用普通的方法来做,但要作如下声明:
function mycolor(col:longint):longint;stdcall;
function Getcolor:longint;stdcall;
其中,mycolor为构造窗体;Getcolor为传递颜色数据。在implementation区声明一个窗体内全局的变量
var color1:longint;
下面写出相应的程序
function mycolor(col:longint):longint;stdcall;
var Form1: TForm1;
begin
form1:=Tform1.Create(application);
form1.show;
form1.panel1.Color:=col;
form1.edit1.Text:=inttostr(form1.panel1.Color);
result:=color1;
end;
function Getcolor:longint;stdcall;
begin
result:=color1;
end;
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
panel2.Color:=RGB(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position);
edit2.Text:=inttostr(panel2.Color);
color1:=panel2.Color;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Free; //析构Form1
end;
2)建立动态连接库
运行成功后,再建立动态连接库:
library FormDLL;
{从文件调入}
uses
unit1 in ‘unit1.pas’;
exports
{写入接口标示符}
Mycolor name ‘My’,
Getcolor name ‘Get’;
begin
end.
3)建立调用的程序
首先声明要调用的DLL函数
const
gdi32=’formDll.dll’;
function Mycolor(col:longint):longint;stdcall;external gdi32 name ‘My’;
function Getcolor:longint;stdcall;external gdi32 name ‘Get’;
然后写出相应的程序
procedure TForm1.Button1Click(Sender: TObject);
begin
Mycolor(color);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
color:=getcolor;
end;
我们可以看到,在改变颜色的窗体中做了颜色变化后,当前窗体的颜色将发生变化。
handle