本人原本是用VB进行二次开发的,主要是用VB编写activex dll来实现一个类模块名(clsProductFacade),类模块的代码如下:
Option Explicit
'Public oLogin As U8Login.clsLogin
Private IsDemo As Boolean'调用子窗体接口,与原左树菜单控件接口一致
Public Function CallFunction(ByVal cMenuId As String, ByVal cMenuName As String, ByVal cAuthID As String, ByVal cCmdLine As String) As Boolean
    
    Dim Success As Boolean
    
    On Error GoTo errHandler
    CallFunction = False
    Select Case cMenuId
        Case "ZB0101"
             ProcessType.Show
             Success = True
        Case "ZB0102"
             Process.Show
            Success = True
        Case "ZB0201"
            yangpin.Show
            Success = True
    End Select
    
    If Success = False Then
        GoTo errHandler
    End If
    
    CallFunction = True
    Exit FunctionerrHandler:
   CallFunction = False
   
End Function
'发送注销消息
Public Function LogOff() As Boolean
    Set m_oLogin = Nothing
    LogOff = True
End Function'得到login方法
Public Function Login(Mylogin As Object) As Boolean
    Set m_oLogin = Mylogin
    Set ConPub = New ADODB.Connection
    ConPub.Open m_oLogin.UfDbName     '得到数据库连接字符串
    Login = True
End Function现在想用delphi来重新编写,不知道怎么转换,请高手指教。
我现在的做法是在delphi中新建一个Activex library(不知道在delphi中是否对应这个?)然后再new一个unit,在里面写一个类TclsProductFacade(用来对应VB中相应的类模块),然后再在里面实现以上的几个方法,但宿主程序还是提示说dll文件没有注册。注:在宿主程序中是通过tz.clsProductFacade来调用activex中的类的,期中tz是dll的文件名。

解决方案 »

  1.   

    cmd打开后输入:regsvr32 tz.dll
      

  2.   

    这个我知道,dll我是注册了的,还是不行,我想还是我的activex dll的写法有问题,请指教。
      

  3.   

    从你讲的看,你的DLL文件是做正确了的,但你说:“但宿主程序还是提示说dll文件没有注册。 ”应该是注册问题。
    如果确实进行了注册,那还得回头检查你的程序。
    你可以在网上找一下DELPHI做activex的文章。如:http://read.newbooks.com.cn/info/157992.html,呵呵,随便GOOGLE了一下。
      

  4.   

    http://read.newbooks.com.cn/info/157992.html
    不错