这个问题本来是提在DELPHI版中的,但一直没有回复,想想也许是VB本身的问题,在VB版问更合适。
  我们用VB做了一个OCX控件,该控件定义了一个函数(function)和几个属性(Property),将这个控件注册后,放入窗口(是可视化控件),在代码中引用属性值是可以的,但调用该函数就出错,提示“Project xxx Raised Exception class EOleException with Message '无效的属性值'”。
   该函数无参数,返回值为WordBool型(VB中为Boolean)。但即使不取返回值也会出错。请问有没有什么办法可以实现在delphi中调用VB编写的控件

解决方案 »

  1.   

    一定要写成ocx控件吗? 用vb 写成dll来调用试试看。 
    我写了一个dll.里面也放了几个function, delphi以ActivX方式调用成功的! 你不妨试试
      

  2.   

    To: penglc
    因为已经做成OCX控件了,而且是个很复杂的控件(至少用了15个人月),重新作的代价是很大的。
      

  3.   

    我用delphi和VB做了个测试,分别制作一个控件,含有同样的方法定义,然后在VC的OLE VIEW中看看是否有不同,结果如下:
    函数名为test1,无参数,返回值在delphi中为integer,VB中为long(两者等价)
    delphi定义如下:
        function test1: Integer; safecall;
    生成IDL:
    [id(0x00000021)]
        HRESULT test1([out, retval] long* Value);VB定义如下:
    Public Function test1() As Long
    生成IDL
        [id(0x60030000)]
        HRESULT test1([out, retval] long* );这有什么不同吗?