要在DLL中写一个函数,交给总控调用,函数很简单,就是创建DLL中的窗体,然后显示出来就行了。我长期使用这种方式,代码晚上可以给你贴出来。
这种放在DLL中的窗体在设计时和放在工程中没有任何区别,就是调试的时候稍微麻烦一点,需要指定宿主程序,并且有一个问题,就是总控调用DLL的窗体后,DLL中的窗体会在任务栏上产生独立的标志,比如,你调用了5个DLL中的窗体,那么在任务栏上你会看见这些窗体,有点影响美观。
这种放在DLL中的窗体在设计时和放在工程中没有任何区别,就是调试的时候稍微麻烦一点,需要指定宿主程序,并且有一个问题,就是总控调用DLL的窗体后,DLL中的窗体会在任务栏上产生独立的标志,比如,你调用了5个DLL中的窗体,那么在任务栏上你会看见这些窗体,有点影响美观。
我已做好了两个窗体:库存统计,销售统计,他们的标识分别是:
unit_kucun,frm_kucun;unit_xiaoshou,frm_xiaoshou,我该怎么在
Dll中写这个函数或过程?
还有在调用时?
能不能给我一个简单的例子?
to jabmoon(刺月) :我还是等着您的例子,谢谢了!
这样的话可以通过一个统一的接口来调用DLL中的多个不同的窗体。
DLL的做法与普通做法差不多,但要多一个类引用 的接口而已。
麻烦你再发一次好吗?我刚才检查邮箱了因放不下而被拒受了
不好意思!
uses
Windows,SysUtils,Classes,Forms,
Buy in 'Buy.pas' {FBuy};procedure Pro_Buy_New(App: TApplicatoin);stdcall;export;
var
Child : TFBuy;
begin
Child := nil;
try
Child := TFBuy.Create(App);
Child.Show();
except
Child.Free();
end;
end;exports
Pro_Buy_New;begin
end;
Forms,XY_Base1,
XY003_1 in 'XY003_1.pas' {FormXY003_1},
XY003_2 in 'XY003_2.pas' {FormXY003_2},
XY003_3 in 'XY003_3.pas' {FormXY003_3},
XY003_4 in 'XY003_4.pas' {FormXY003_4};{$R *.RES} procedure XY003Show(PROGRAMPARAM:INTEGER);stdcall;
var
WaitForm:TForm;
begin
WaitForm:=XYWaitForm('正在加载程序,请稍候......');
try
Application.CreateForm(TFormXY003_1, FormXY003_1);
FormXY003_1.PROGRAMPARAM:=PROGRAMPARAM;
FormXY003_1.Show;
finally
WaitForm.Free;
WaitForm:=nil;
end;
end; exports
XY003Show;//外部调用函数,用于调用[地区层次]模块begin
end.其中XY003Show这个函数用exports申明为外部调用,然后在总控单元有如下代码:procedure XY003Show PROGRAMPARAM:INTEGER);stdcall;external 'XY003.DLL'然后就可以用XY003Show调用窗体了
Forms,XY_Base1,
XY003_1 in 'XY003_1.pas' {FormXY003_1},
XY003_2 in 'XY003_2.pas' {FormXY003_2},
XY003_3 in 'XY003_3.pas' {FormXY003_3},
XY003_4 in 'XY003_4.pas' {FormXY003_4};{$R *.RES} procedure XY003Show(PROGRAMPARAM:INTEGER);stdcall;
var
WaitForm:TForm;
begin
WaitForm:=XYWaitForm('正在加载程序,请稍候......');
try
Application.CreateForm(TFormXY003_1, FormXY003_1);
FormXY003_1.PROGRAMPARAM:=PROGRAMPARAM;
FormXY003_1.Show;
finally
WaitForm.Free;
WaitForm:=nil;
end;
end; exports
XY003Show;//外部调用函数,用于调用[地区层次]模块begin
end.其中XY003Show这个函数用exports申明为外部调用,然后在总控单元有如下代码:procedure XY003Show PROGRAMPARAM:INTEGER);stdcall;external 'XY003.DLL'然后就可以用XY003Show调用窗体了