zoukankan      html  css  js  c++  java
  • Delphi生成即调用带窗体的Dll

    library frmDll;
    
    { Important note about DLL memory management: ShareMem must be the
      first unit in your library's USES clause AND your project's (select
      Project-View Source) USES clause if your DLL exports any procedures or
      functions that pass strings as parameters or function results. This
      applies to all strings passed to and from your DLL--even those that
      are nested in records and classes. ShareMem is the interface unit to
      the BORLNDMM.DLL shared memory manager, which must be deployed along
      with your DLL. To avoid using BORLNDMM.DLL, pass string information
      using PChar or ShortString parameters. }
    
    uses
      SysUtils,
      Classes,
      Forms,
      FormDll in 'FormDll.pas' {Form1};
    
    {$R *.res}
    
    function GetDllForm:TForm;stdcall;export;//定义导出方法;
    begin
      result:=Form1; //函数返回类型为一个窗体;
    end;
    exports
      GetDllForm;//声明可导出的方法;
    
    begin
    end.
    
    
    
    
    unit FormDll;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.btn1Click(Sender: TObject);
    begin
      MessageDlg('你已经成功调用了Dll控件',mtinformation,[mbOK],0);
    end;
    
    initialization //在单元中放在文件结尾前,包含用来初始化单元的代码,它在主程序运行前运行并且只运行一次
    begin
      Form1:=TForm1.Create(Application);
    end;
    
    finalization//在单元中放在 initialization 和 end. 之间,包含了单元退出时的代码。程序退出时运行并且只运行一次。
    begin
      Form1.Free;
    end;
    
    end.
    
    
    
    
    
    unit testdll;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        btn1: TButton;
        procedure btn1Click(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.btn1Click(Sender: TObject);
    var
      AForm:TForm;
    begin
      AForm:=GetDllForm;
      AForm.Show;
    end;
    
    end.
     
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    “xmlns:d="http://schemas.microsoft.com/expression/blend/2008"” 命名空间不能被解析
    mysql 连接命令 表管理 ,克隆表,临时表,字符串属性,设定语句间的分隔符
    视图
    NULL值比较,两个列的合并,列值按条件替换。
    词性和 句子成份
    设置用户帐号只能一个地方登录
    数字的格式化,异常处理
    接口,构造器与垃圾回收机制,对像的生命周期。非静态方法与静态方法。
    继承,多态..
    JavaScript —— 常用数据类型隐式转换
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12169918.html
Copyright © 2011-2022 走看看