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.
     
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    img标签为什么可以设置宽高
    高度和宽度的操作
    自增自减运算符
    读取标签内容:innerHTML和innerText的区别 text()和html()的区别
    js中的常用方法
    js中style,currentStyle和getComputedStyle的区别以及获取css操作方法(考虑兼容性和局限性)
    IE盒模型与W3C盒模型区别
    css四种定位方式及其区别
    css隐藏元素的方法何区别
    Hibernate之HQL
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12169918.html
Copyright © 2011-2022 走看看