怎样把一个class封装ocx?(为表诚意100分送上先)
我写了一个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




