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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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