1.当然可以的.比如VB调用.
2.你创建的严格说是一般COM,不是ActiveX控件.ActiveX可以看作是一种特殊的COM,
在创建时选择创建ActiveX.
3.你编出的COM组件,提供给别人用只需要给出DLL或OCX就行了.

解决方案 »

  1.   

    哦..刚才没有仔细看.
    你那样声明原型的方法在VC,BCB里面能这样用,VB就不是这样用.VB一般通过IDispatch方式调用.
      

  2.   

    to halfdream(哈欠)(50):
       谢谢。
       1 ……
       2 您说的创建ActiveX,具体是选择哪一项呢?是ActiveX Control吗?可是选择这一项后,delphi给出的vcl class name一项选择什么呢?供选择的都是诸如TListBox、TMemo之类的,这样创建出来的ActiveX代表了什么意义呢?
       3 我的xxx.dll对应的源文件里uses了xxx_Lib,如果只提供xxx.dll,而不包含xxx_Lib,会不会出错呢?
       请教……
      

  3.   

    vcl class name,这个只是delphi给你的方便,你的activex控件可以从原来的vcl基础上继承过来,然后自己再修改!
    没有哪个xxx文件,使用应该也没错!
    我在做com时,就是这样!
      

  4.   

    to missile(50):
       那么就是说,要创建一个标准的ActiveX,步骤如下:
           1 New ActiveX Control
           2 随便选择一个vcl class,其余选项酌情
           3 删除所有无用的代码
           4 填写自己想要实现的代码
           5 注册
           
      我的问题:
           1 删除无用代码的标准是什么
           2 uses了xxx_tlb.pas,发布时却可以不带上它,确保无错?(这个家伙罗里罗嗦、唧唧歪歪,真是讨厌   :))
                                     
      

  5.   

    用ActiveX Control很方便阿,delphi给你自动生成
    另外我觉得完全可以在vcl的基础上建立一vcl控件
    然后RegisterCommponents上
    在转化为Activex控件,不过好像只能从TWinControl继承来的才能转换吧
    我没做过,只是一点想法
      

  6.   

    to xzgyb(老达摩):
       那么对已完成的组件,怎么转化为ActiveX组件呢?   另外,我将我的目的补充说明一下:
           生成一个标准的ActiveX,它提供两个方法调用A、B。它可以被其他设计者通过Import ActiveX Control导入,然后设计者就可以在控件面板上直接拖放使用了。
      

  7.   

    RegisterComponents上去的组件,当建ActiveX Control时在Vcl Class Name会列出来
    不过需要从TWinControl继承
      

  8.   

    to xzgyb(老达摩):
       我的组件是从TComponent继承的,不是TWinControl    :(
       那么这一类的组件怎么转化为ActiveX组件呢?
       
       跑题了!
       请指点建ActiveX的标准方法,请建过的朋友指点我们。
      

  9.   

    抱歉,偶也不懂,但是作为ActiveX控件为什么不从TWinControl继承呢
    另外你的ActiveX控件只是导出些函数,没有可似化的信息,何不直接建一
    COM对象。
    只好帮你UP了
      

  10.   

    继承自TWinControl的话有一大堆用不上的东西,删了又怕出错,所以……
    我前面建的正是com对象,只不过不好用
                                           推…………
      

  11.   

    普通的COM对象不好用的话
    建个Automation Object也行吧,支持dispinterface
    象VB也可调用,vb如何调用不太清楚
    我晚上看看书在说
      

  12.   

    按你的情况,也可以创建Automation object, 
    因为它提供了IDispatch 接口,使用也是很方便的。可以不引入类型库,直接用CreateObject等方式调用。
    在DELPHI,VB,PB....等工具中,居然这个函数使用极为相似,帮助中都有。
      

  13.   

    好的,我试试。
          Com调用比较麻烦,还要在调用的地方写上接口声明,所以才想要建一个类似发布的ActiveX。
                                                 请您继续关注,谢谢。
      

  14.   

    怎么样了,taber
    Automation Object建的如何啦
      

  15.   

    我在ActiveX Library里建了一个Automation Object,也可以达到目的,与Com的用法差不多,同样要在调用程序里写接口声明及GUID,也不理想,不过我手头没有相关资料,不知道有没有更简便的方法。
    另外,怎么从Com里返回一个文件类型啊,delphi不认,苦恼……
                                                            帮我
      

  16.   

    补充:
        我想返回任意文件类型(File),delphi不认。
      

  17.   

    1.看来你真不会查帮助。
    下面这贴自于DELPHI帮助的。
    ------------------------------------------
    var
      MSWord: Variant;
    begin
      ...
      MSWord := CreateOleObject('Word.Basic');
      MSWord.XXXX(XXX,XXX);  //为了你清楚,补充上这句
      MSWord := Unassigned;
      ...
    end;
    -------------------------------------------
    这是调用自动化对象的一般方法。
    另外,也可以用CreateComObject
    -----------------------------------------
    var
      obj: Variant;
    begin
      ...
      obj := CreateComObject(  /* 参数为GUID */);
      obj.XXXX(XXX,XXX);    //要这样用,它必须是自动化对象.事实是调用IDispatch接口
      obj := Unassigned;
      ...
    end;
    -------------------------------------------
    当然,你那样用接口声明的方法也是比较常用的,只是它用起来麻烦一点,
    但相对效率较高。2.参数返回文件类型?实在不明白你的意思。如果是传文件句柄,,,在很多情况下都是禁止的。
      COM调用中,参数种类就那么有限几种,如果要传特定格式的数据,得进行一定转换。
      

  18.   

    非常感谢
        1 我现在把调用方法改过来了,简便了一些。
        2 我想在Com里定义一个方法,它的返回值为文件,也就是file类型的,但delphi不允许,我现在是用variant代替的,有什么好办法吗?
                                         请大家指点,欢迎讨论。