DLL檔案中Form的使用 (轉)

worldblog發表於2007-12-09
DLL檔案中Form的使用 (轉)[@more@]


主題:DLL中Form的使用(2)

貼出此文之前,未查閱過任何相似文章,如有相同,敬請見諒,並告示(注:本人曾就同一DLL中一窗體附窗體,如何實現之問題,請教過一前輩,但前輩笑笑未言),此為我在寫動態元件時想到的一方法,結果透過,各位見諒。我為初學,而求學路見艱難,貼出只望我一樣初學者給點幫助,無他。
library DLLPJ;

uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

exports
  ShowMainPRGWin;
 
begin
end.
----------
unit Unit1;

interface

uses
  , Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Unit2,Dialogs, StdCtrls;
  //1.附窗體單元加在此處
type
  TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: T);
  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form1: TForm1;
  Form2: TForm2; //2.附窗體定義在此處
// Declare the export function of windows of the main DLL
function ShowMainPRGWin(AHandle:THandle):BOOL;StdCall;

implementation

{$R *.dfm}
function ShowMainPRGWin(AHandle:THandle):BOOL;
begin
  Form1:=TForm1.Create(Application);
  Form2:=TForm2.Create(Application); //3.建立附窗體
  try
  Form1.ShowModal;
  Result:=False;
  Finally
  Form1.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.ShowModal;//4.在主窗體上呼叫附窗體
end;

end.
------------
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
  private
  { Private declarations }
  public
  { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.
----------
//在其他窗體上呼叫DLL的定義及方法
procedure ShowMainPRGWin(AHandle:THandle);StdCall External 'DLLPJ.DLL';

ShowMainPRGWin(1);


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990597/,如需轉載,請註明出處,否則將追究法律責任。

相關文章