使用DLL文件中封装的窗口
文章摘要:
编写软件时常常使用到DLL文件,本文就使用DLL文件中封装的窗口来说说Delphi中在DLL如何封装窗口,如何调用DLL中封装的窗口,及MDI-Child在DLL中载入并使用
一、在DLL中封装窗口
打开Delphi新建一个DLL工程,保存为usedll,生成代码
library usedll; { Important note about DLL memory management: ShareMem must be the uses {$R *.res} begin |
新建一个窗体,添加一个Label和Button,设置如下:
object Form1: TForm1 Left = 192 Top = 133 Width = 334 Height = 221 Caption = 'DLL'#20013#20351#29992#31383#20307 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 104 Top = 80 Width = 80 Height = 13 Caption = 'DLL'#20013#20351#29992#31383#20307 end object Button1: TButton Left = 120 Top = 152 Width = 75 Height = 25 Caption = #30830#23450 TabOrder = 0 OnClick = Button1Click end end |
添加一过程:procedure LoadForm; export;
procedure LoadForm;
begin
Form1 := TForm1.Create(Application);
try
Form1.ShowModal;
finally
Form1.Free;
end;
end;
全部完整的代码:
library usedll; uses {$R *.res} end. |
unit Form_Unit; interface uses type var implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); end. |
编译后生成usedll.dll文件,至此DLL文件就完成了
二、调用DLL中封装的窗口
新建一个工程,添加一个Button,窗体布局如下:
object Form1: TForm1 Left = 192 Top = 133 Width = 336 Height = 222 Caption = 'Form1' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 128 Top = 88 Width = 75 Height = 25 Caption = #25171#24320#31383#20307 TabOrder = 0 OnClick = Button1Click end end |
完整的代码如下:
unit Use_Unit; interface uses var {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); end. |
三、MDI-Child在DLL中载入并使用
如果是MDI-Child又如何在DLL中载入并使用呢,下面就这个问题说说使用DLL文件中封装的窗口。
新建一个DLL工程,保存为mdidll,再新建一个窗体,FormStyle设为fsMDIChild,如下:
object Form1: TForm1
Left = 192
Top = 133
Width = 344
Height = 234
Caption = 'MDI'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsMDIChild
OldCreateOrder = False
Position = poDefault
Visible = True
OnClose = FormClose
PixelsPerInch = 96
TextHeight = 13
end
代码如下:
unit mdi_Unit; interface uses type var {$R *.dfm} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); end. |
library mdidll; uses procedure LoadChild(ParentApplication: TApplication; ParentForm: TForm); export; stdcall; begin procedure DLLUnloadProc(Reason: Integer); register; {$R *.res} |
编译后生成mdidll.dll文件。
使用DLL中的MDI-Child窗口如下:
新建一个工程,主窗口设置如下FormStyle设为fsMDIForm:
object Form1: TForm1
Left = 192
Top = 133
Width = 544
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsMDIForm
Menu = MainMenu1
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object MainMenu1: TMainMenu
Left = 72
Top = 136
object N1: TMenuItem
Caption = #26032#24314'(&N)'
OnClick = N1Click
end
end
end
代码:
unit usemdi_Unit; interface uses type implementation {$R *.dfm} procedure TForm1.N1Click(Sender: TObject); end. |
结束语:
到这里你应该会用Delphi调用DLL文件中封装的窗口了吧,如果还有不明白的话请与我联系(主页: http://yousoft.home.chinaren.com ,邮箱:yousoft@chinaren.com)