计算机二级辅导:delphi制作dll文件
来源:优易学  2011-6-7 13:02:42   【优易学:中国教育考试门户网】   资料下载   IT书店

  第二节 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

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训