delphi中一個值得大家來考慮的DLL問題
更新時間:2008年03月15日 18:15:00 作者:
在MDI窗體類型的編程中,主窗體(fsMDIForm)怎樣調(diào)用子窗體(fsMDIChild,此子窗體為DLL)。
以下是我的原代碼:
==========================================================================================
DPR 單元代碼
program Mdiform;
uses
Forms,
UMdiform in ´UMdiform.pas´ {Mainform},
UDM in ´UDM.pas´ {GlobalDM: TDataModule},
UFun in ´UFun.pas´;
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TMainform, Mainform);
Application.Run;
end.
===============================================================================================
主窗體代碼:
unit UMdiform;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Udm,StdCtrls;
type
TMainform = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
MyHandle:HWND;
{ Public declarations }
end;
var
Mainform: TMainform;
type
T_ShowTestMng=function (var adm:TMainform) : Boolean; StdCall;
implementation
{$R *.dfm}
procedure TMainform.Button1Click(Sender: TObject);
var
Lib_ :THandle;
_ShowTestMng :T_ShowTestMng;
begin
Lib_:=LoadLibrary(pchar(´MdiChild.dll´));
try
@_ShowTestMng:=GetProcAddress(Lib_,´_ShowTestMng´);
if not(@_ShowTestMng=nil) then
_ShowTestMng(Mainform);
finally
FreeLibrary(Lib_);
end;
end;
procedure TMainform.FormCreate(Sender: TObject);
begin
MyHandle:=Application.Handle;
end;
end.
==============================================================================================
子窗體DLL代碼:
library MdiChild;
uses
ShareMem,
UMdiform, //此單元為父窗體單元,在頂目設(shè)置中我已經(jīng)設(shè)置了搜索此單元在路徑。
Forms,
SysUtils,
Classes,
UChild in ´UChild.pas´ {FrmChild};//FrmChild子窗體的FormStyle屬性為FsMDIChild
{$R *.res}
function _ShowTestMng(var adm:TMainform) : Boolean; StdCall;
begin
result:=true;
Application.Handle:=adm.MyHandle;
Application.CreateForm(TFrmChild,FrmChild); //程序就出錯在此:出錯原因是:Cannot create form. No MDI Forms are currently active.
FrmChild.Show;
end;
exports
_ShowTestMng;
end.
相關(guān)文章
delphi mysql adbquery數(shù)據(jù)提供程序或其他服務(wù)返回 E_FAIL 狀態(tài)
這篇文章主要介紹了delphi mysql adbquery數(shù)據(jù)提供程序或其他服務(wù)返回 E_FAIL 狀態(tài)的解決方法2013-11-11delphi實現(xiàn)將BMP格式圖形轉(zhuǎn)化為JPG格式圖形的方法
這篇文章主要介紹了delphi實現(xiàn)將BMP格式圖形轉(zhuǎn)化為JPG格式圖形的方法,通過簡單的自定義函數(shù)調(diào)用系統(tǒng)自帶的changefileext及SaveToFile等方法來實現(xiàn)格式轉(zhuǎn)換功能,是非常實用的技巧,需要的朋友可以參考下2014-12-12Delphi實現(xiàn)判斷網(wǎng)址是否存在及是否可以打開的方法
這篇文章主要介紹了Delphi實現(xiàn)判斷網(wǎng)址是否存在及是否可以打開的方法,需要的朋友可以參考下2014-07-07Delphi實現(xiàn)獲取進(jìn)程列表及相關(guān)信息的實例
這篇文章主要介紹了Delphi實現(xiàn)獲取進(jìn)程列表及相關(guān)信息的實例,希望通過本文大家能實現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09Delphi 根據(jù)字符串找到函數(shù)并執(zhí)行的實例
這篇文章主要介紹了Delphi 根據(jù)字符串找到函數(shù)并執(zhí)行的實例的相關(guān)資料,希望通過本能幫助到大家實現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09