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

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

18 个解决方案

#1


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

#2


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

#3


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

#4


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,调试。成不成就看你自己的了^_^

#5


谢谢 wuyu1981(方圆) 
明天我去试试看,成了就再开个帖子给你加分

不过有个问题是我的class调用了dll,会不会有什么问题,我记得是那个朋友跟我说要拔掉用了dll的代码封装进activex很麻烦

#6


占个地方,回来学习一下

#7


activexform

#8


顶一下

#9


UP

#10


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

#11


不错,值得学习!

#12


谢谢楼上的大虾们,但有些问题还是没有解决:

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

再次感谢

#13


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

#14


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

#15


顶一下^_^

#16


你在哪个窗体上用这个button,就在那个窗体的FormShow里面设置MyButton.visable := False;
我测试过我得,可以隐藏啊!

实在不行就用一种变通的方法:用别的控件覆盖这个MyButton就可以了。

#17


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

#18


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

#1


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

#2


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

#3


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

#4


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,调试。成不成就看你自己的了^_^

#5


谢谢 wuyu1981(方圆) 
明天我去试试看,成了就再开个帖子给你加分

不过有个问题是我的class调用了dll,会不会有什么问题,我记得是那个朋友跟我说要拔掉用了dll的代码封装进activex很麻烦

#6


占个地方,回来学习一下

#7


activexform

#8


顶一下

#9


UP

#10


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

#11


不错,值得学习!

#12


谢谢楼上的大虾们,但有些问题还是没有解决:

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

再次感谢

#13


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

#14


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

#15


顶一下^_^

#16


你在哪个窗体上用这个button,就在那个窗体的FormShow里面设置MyButton.visable := False;
我测试过我得,可以隐藏啊!

实在不行就用一种变通的方法:用别的控件覆盖这个MyButton就可以了。

#17


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

#18


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