我在一个窗体上放置了很多的控件,现在我想把这个窗体加入到一个DLL文件中,然后在一个应用程序中调用这个窗体,怎么做?程序中调入窗体时,那个窗体的初始化能不能在设计阶段设置好?还是必须在代码中实现?
procedure TMainForm.N1Click(Sender: TObject);
begin
//我想在这里写调出那个窗体的代码!
end;
procedure TMainForm.N1Click(Sender: TObject);
begin
//我想在这里写调出那个窗体的代码!
end;
解决方案 »
- 在bpl中创建线程经常会出现意想不到的问题
- delphi内存占用
- 西安的delphi程序员注意!!!!
- 苏州的DELPHI程序员:???
- 求毕业设计...
- ?怎么获得chart控件(曲线图形)鼠标所在的点的在横轴上的数据值和纵轴上的数据值(jefferwind)
- 请教astaclientsocket,nmsmnp的具体用法(高分)
- 为什么第二次向数据库添加数据时总是提示DataSet只读?
- 求教:用delphi的在WIN98/2000下ADO编写的程序为什么在XP下会出错?
- 有没有好的delphi的图像编程的网站
- 求代码**Treeview控件**想把一个查询的结果集都作为某一节点的子节点
- windows服务程序的问题!!
--现建立一个DLL,这是一个Project,可以添加Form
--在DLL 的 Project 文件中写函数来动态建立Form,作为接口。
--然后在你上面注释的地方加入接口函数,应该就可以了。
窗体单元中定义生成窗体的函数和代码实现
例如
procedure ShowDllModalForm(aHandle:Thandle);stdcall;
实现
procedure ShowDllModalForm(aHandle:Thandle);stdcall;
begin
Application.Handle:=aHandle;
with TfrmDll.Create(Application) do
begin
try
ShowModal;
finally
free;
end;
end;
end;
在 Dll中倒出接口函数名
exports
ShowDllModalForm;调用Dll时 现加载Dll
然后
type
TShowDLLForm=procedure(aHandle:THandle);stdcall;
procedure ButtonClick;
var
ShowDllModalForm:=TShowDllForm;
begin
if (@ShowDllModalForm=nil) then exit;
ShowDllModalForm(Application.Handle);
end;
var
vardll:String;
begin
vardll:=extractfilepath(application.ExeName)+'gxc.dll';
try
if vardll<>'' then
begin
moudle:=loadlibrary(pchar(vardll));
@showdll:=getprocaddress(moudle,'showdll');
showdll(application.Handle,pchar(usercode),pchar(compcode),pchar('GXC1'));
end;
finally
freelibrary(moudle);
end;
end;
以上为调用部分,以下是DLL部分
procedure showdll(ahandle:thandle;g_usercode,g_compcode,g_bblx:pchar);stdcall;
var
old_handle:thandle;
begin
old_handle := application.Handle;
application.Handle := ahandle;
usercode:=g_usercode;
compcode:=g_compcode;
bblx:=g_bblx;
dm:=tdm.Create(application);//同下
try
gxc:=tfm_gxcyb.Create(application);//这个很重要,不然会报错
gxc.ShowModal;
finally
gxc.Free;
dm.Free;
application.Handle := old_handle;
end;
end;
uses DllFormUnit;procedure ShowForm
begin
dllForm:=TDllForm.Create(nil);
DllForm.Show;
end;procedure DeleteForm
begin
DllForm.Free;
end;exports
ShowForms,DeleteForm;
usercode:=g_usercode;
compcode:=g_compcode;
哪来的?