貼出此文之前,未查閱過任何相似文章,如有相同,敬請見諒,並告示(注:本人曾就同一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
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Unit2,Dialogs, StdCtrls;
//1.附窗體單元加在此處
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
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);