捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
Dll 封装导出类演示
关键字:Dll TFrame 封装 窗体
来 自:原创
平 台:Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:初级 完成时间:2007/5/19
发布者:notblack 发布时间:2007/5/19
编辑器:DELPHI7 语  种:简体中文
分 类:窗体 下载浏览:2945/19471
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
嘿嘿,大侠看到不要见笑呀...  
大家都知道使用DLL的好处.于是我就想把FORM封装到DLL里面去.
到网上找,发现是MDI和模式窗体的,非模式的也有很多问题.便想自己解决这个问题.
原来是用DLL创建一个对象返回,但发现有很多的问题.
想了半天就去寻根问柳吧.
找到了类.
我就想把类封装进DLL,到时简单的返回一个类,然后在主程序里操作不就简单了?
找了半天发现了TFormClass,于是试了试从DLL导出来,像一般的程序一样创建窗体发现成功.
接着我又想看看其他的类是不是也能这样,就拿TFrame来实验.
function GetDllFrameClass():TFrame;stdcall;
第一次是这样声明的,失败.奇怪?!
试了好多次都不行,就想到了TFormClass(Ctrl+左键),进去看看,发现是这样声明的.
TFormClass = class of TForm;
哎呀,恍然大悟!!
class(TFrame) 是声明一个类, 这个类继承了TFrame类 f: TFrame; 是一个对象
class of TFrame 声明的是类类型, f:TFrameClass 是一个类.
function GetDllFrameClass():TFrame; 
返回就不是类而是对象了,照TFormClass修改后TFrameClass = class of TFrame;
运行...成功,哈哈....
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
Dll 封装导出类演示
notblack 2007/5/19 下+2945/浏+19472 评+17
关于主窗体与子窗体之间的调用一点技巧
tp26021340 2006/11/6 下+0/浏+19782 评+8
无闪烁 MDI 子窗口
vvyang 2006/4/27 下+3487/浏+18090 评+14
调用DLL中窗体相关演示源码
msgsnd 2004/4/13 下+4457/浏+21159 评+12
MDI程序相关演示 (更新版)
hebiziyu 2004/3/17 下+3784/浏+19123 评+11
MDI程序调用dll中的mdiChildForm例子
hebiziyu 2004/1/31 下+2868/浏+18000 评+9
相关评论
共有评论17条 当前显示最后6条评论
39459366 2007/7/3 17:03:07
帮我一下:
D6怎么设置,DLL的编译还境。。在此先谢了
egust 2007/7/6 8:52:08
这些问题都是由delphi的memory manager导致的,delphi默认内存管理会让exe和dll使用不同的mm,这样造成了许多问题,比如不能传递string做参数等等,从在主程序写访问dll传入的object后再销毁的时候会出错。解决办法是在project单元中引用ShareMem单元并且在发布时需要同时发布borlandmm.dll(在delphi的安装目录的bin目录下),另一种方法是使用FastMM(一个开源项目,比borland自己的mm效率更高,而且不需要使用sharemem单元和发布borlandmm.dll)来代替delphi默认的mm
63226526yuan 2007/8/25 15:49:38
我也测试过了  frame还是不行
希望哪位高手能解决一下问题啊~~
jianghl 2007/10/20 1:09:53
难道大家都没有发现,你们直接编译出来的EXE、DLL与作者编译的有什么不同?

要编译通过 将两个工程的工程选项 Runtime Package 只是包含 VCL
这样就可以了。
notblack 2007/11/9 12:58:31
楼上正解!!!
happyggy 2009/9/28 17:31:39
为什么要做 “两个工程的工程选项 Runtime Package 只是包含 VCL ”才可以?
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表