CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

怎样把一个class封装ocx?(为表诚意100分送上先)

楼主Megadeth(我只会问问题,不会回答)2005-03-04 19:57:49 在 Delphi / VCL组件开发及应用 提问

我写了一个class,该class的功能大体是:调用某打印机厂商提供的dll打印指定文本,测试一切正常,但最后集成时要求我封装成ocx,我想问大家我该怎么把一个class封装成ocx?  
  注意该class调用了dll,谢谢啦,如果问题解决了,我在加送100分给解决问题的人,决不食言!  
  问题点数:100、回复次数:18Top

1 楼ekenlin(江南才子)回复于 2005-03-04 20:23:10 得分 0

顶一下。为了分数我去看看资料吧。或许能帮上你的,你也不要忘了看书呀,或许你自己已经想出来了呢。。哈哈我也是Delphi迷Top

2 楼Megadeth(我只会问问题,不会回答)回复于 2005-03-04 20:27:24 得分 0

我查了很多资料都没查到,我封装了很多次也没成功  
  谢谢你帮忙啊Top

3 楼getit911(Windows转Linux中)回复于 2005-03-04 21:25:03 得分 0

创建一个activexform工程不可以吗?Top

4 楼wuyu1981(方圆)回复于 2005-03-04 21:25:37 得分 100

1、创建一个空的OCX工程:  
        打开Delphi,关闭已有的空工程,选择File-》New-》Other-》ActiveX-》ActiveXControl,在弹出的窗口中选择TButton,命名MyButton,然后把版本勾上,确定,就会生成一个OCX工程,  
  2、加载你的Class:  
      在单元MYButtonImpl1的Private下定义你的Class对象,如:MyClass:TMyClass;然后在InitializeControl中创建你的对象,Destroy中释放你的对象;  
  3、添加OCX属性、方法、事件:  
        点击窗体上的View-》Type   Library,在弹出的窗体上添加你的方法,事件,属性等(这些方法的参数参考你自己Class中的方法,因为步骤4中要调用你Class中的方法),然后点击该窗体上的Refresh按钮,这是你会发现MYButtonImpl1下多了很多方法,但是这些方法都没有实现;  
  4、调用你的Class对象方法:  
        在步骤3中生成的方法调用你自己Class的方法。  
   
  注册OCX,调试。成不成就看你自己的了^_^Top

5 楼Megadeth(我只会问问题,不会回答)回复于 2005-03-04 21:37:58 得分 0

谢谢   wuyu1981(方圆)    
  明天我去试试看,成了就再开个帖子给你加分  
   
  不过有个问题是我的class调用了dll,会不会有什么问题,我记得是那个朋友跟我说要拔掉用了dll的代码封装进activex很麻烦Top

6 楼dragon191(幻世星龙)回复于 2005-03-04 21:43:37 得分 0

占个地方,回来学习一下Top

7 楼old_wei(老魏)回复于 2005-03-04 21:43:54 得分 0

activexformTop

8 楼caiso(十年磨一剑)回复于 2005-03-05 11:19:47 得分 0

顶一下Top

9 楼Sunniness(逛追->理想)回复于 2005-03-05 12:39:54 得分 0

UPTop

10 楼real_name(*真名)回复于 2005-03-05 13:21:40 得分 0

在InitializeControl中创建你的对象的时候   载入你的dll,  
  Destroy中释放你的对象的时候释放你的dll   ;就可以了,不会麻烦吧  
  Top

11 楼g961681(技术庸人(情商太低))回复于 2005-03-05 13:47:56 得分 0

不错,值得学习!Top

12 楼Megadeth(我只会问问题,不会回答)回复于 2005-03-05 15:16:02 得分 0

谢谢楼上的大虾们,但有些问题还是没有解决:  
   
  1、我创建了MYButtonImpl1,里面只有InitializeControl方法,没有Destroy,于是我自己申明了一个destroy却总是报错,不能释放资源的话,会出很多问题。  
  2、由于该控件是继承自button,我倒入activex控件后,总是出现一个button,怎么把他的visiable设为false?有没有办法去掉那些跟button相关的无用属性,做成像delphi自带的那些不可视控件一样。  
   
  再次感谢Top

13 楼Megadeth(我只会问问题,不会回答)回复于 2005-03-06 14:52:27 得分 0

高手快出来帮一下忙啊·?Top

14 楼Megadeth(我只会问问题,不会回答)回复于 2005-03-07 10:50:34 得分 0

怎么把button德visiable射职位falsle?  
  我再InitializeControl里设置,没用阿Top

15 楼caiso(十年磨一剑)回复于 2005-03-07 12:49:46 得分 0

顶一下^_^  
  Top

16 楼wuyu1981(方圆)回复于 2005-03-07 13:04:18 得分 0

你在哪个窗体上用这个button,就在那个窗体的FormShow里面设置MyButton.visable   :=   False;  
  我测试过我得,可以隐藏啊!  
   
  实在不行就用一种变通的方法:用别的控件覆盖这个MyButton就可以了。Top

17 楼sunnysheng(sunnysheng)回复于 2005-03-07 13:22:08 得分 0

对啊,我也有这样的问题,不过我是用的ActiveForm创建的,但存在一个问题,就是如何能实现象VCL非可视化控件一样,在编程阶段,只是一个图标,而在运行阶段则会自动隐藏不可见。编写Ocx控件该如何做呢。我自己也在程序的Create事件中加入了该ocx的visable属性是可以的,但始终要靠外界的代码来实现,我想在ocx内部实现,不知哪位高手能指点,在此先谢了。Top

18 楼Megadeth(我只会问问题,不会回答)回复于 2005-03-07 15:40:07 得分 0

哎,今天把这个控件拿去整合,结果本来在测试阶段那个类很好用的(受到大家认可的),一弄成一个控件,就必须要跟那些程序员强调,需要设置为false,那些属性没用,别管他......结果我被项目管理人员骂了一通,你到底会不会编程那!?我.......无语,那位大人,救命啊Top

相关问题

  • 如何封装ocx控件
  • 关于类封装成dll如何写,有提示就送分,送200以上
  • VB调用Delphi封装的DLL,窗口模式的问题(100分送上,不成敬意)
  • 送分送分送分送分送分
  • 送分!送分!送分!送分!送分!送分!送分!送分!送分!送分!送分!
  • 急用:150分求购源码,50分送人!谁手头有自己用vc封装的ado类,或是odbc类,急用!最好能与DBGrid建立关联!
  • 急,帮帮妹子,要做一个active控件,封装一个进度条的控件,如果实现?解决另有分送!!
  • 为什么用delphi封装的ocx在vb下不能用?
  • 在写ocx的时候想封装ADO,给点建议
  • 在写ocx的时候想封装ADO,给点建议

关键词

  • 控件
  • 属性
  • dll
  • activex
  • 解决
  • delphi
  • 封装
  • ocx
  • 窗体
  • initializecontrol

得分解答快速导航

  • 帖主:Megadeth
  • wuyu1981

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo