高分求一个Dll范例:(200分)

  • 主题发起人 主题发起人 zhczm
  • 开始时间 开始时间
Z

zhczm

Unregistered / Unconfirmed
GUEST, unregistred user!
1。作两个独立的dll封装窗体A,B(两个Dll文件);
2。分别同时动态无模载入主窗体的两个Panel里面(不是静态载入),而且调入的窗体的大小自适应Panel
3.。Dll A再动态载入B(也是无模)
还有3个问题:1载入dll窗体要自动使用Panel的大小,而且随PANEL大小的改变而改变;
2一个Dll窗体既可以有模Show 又可以无模Show;比如Dll窗体B 既可以在Panel2里无模Show,又可以在A中有模Show
3焦点的问题:TAB和回车的响应,Hint的显示等
 
沙发...帮顶下..
 
现悬赏300分
 
写了一下,不知道符合你的要求否.
http://www.delphibbs.com/keylife/images/u165233/DLL窗体.rar
 
谢谢 4楼 我在下载
 
总有爱, 怎么把文件上传上来的?
 
放在笔记里.
 
总是爱高手:很好,你QQ可以告诉我吗?向你请教:我的qq:406193807
 
还有3个问题:1载入dll窗体要自动使用Panel的大小,而且随PANEL大小的改变而改变;
2一个Dll窗体既可以有模Show 又可以无模Show;比如Dll窗体B 既可以在Panel2里无模Show,又可以在A中有模Show
3焦点的问题:TAB和回车的响应,Hint的显示等
谢谢你
 
帮顶一个,顺便发个交流群:delphi天堂群:4654765,不守群规者勿扰
 
我也来顶一下.
 
1 alleft-->alClient,.
2. 自己改一下吧.
3 tab和回车没有问题,hint有问题.原因是dllForm不是panel的子控件.可以尝试改一下insertcontrol插入,我试的时候有些问题.您再研究一下吧.
 
1 alleft-->alClient,. 不能彻底解决,如果原来的Dll 窗体大就不能完全显示了,而且dll窗体无法随Panel大小改变而改变
我看到有这样一个范例:
procedure TDllTest.mergeTo(parentWin: THandle;
rect: TRect);
begin

FDllFrm.ParentWindow := parentWin;
FDllFrm.SetBounds(0, 0, rect.Right - rect.Left, rect.Bottom - rect.Top);
end;

不知如何加在你的范例哪里?
 
大部分问题都解决了。还有一个就是不能有效卸载句柄
Finalization
If (hLib > 0) then
begin
CloseB(BForm);
FreeLibrary(hLib);
end;
以上代码不能有效卸载FreeLibrary(hLib);
 
释放DLL窗体再FreeLibrary吧。
 
你说的这种应用,建议你使用bpl而不是使用dll
如果你的dll仅仅是给你自己用,也就是说,使用dll的主程序都是delphi写的,那么,你还是使用bpl吧,在dll中使用窗体,问题太多了,你现在没有看到问题,是因为问题还没有显现出来。
 
后退
顶部