将新组件拖放到表单上时出现错误消息“Class Not Registered”

时间:2014-05-20 01:23:17

标签: delphi components activex ocx

使用运行Delphi 2010的Windows XP。

我获得了一个名为CsdEft.ocx的第三方软件包(用于连接到EFTPOS终端)

要安装,我执行了以下操作:

  • 选择“导入组件”
  • 选择“导入ActiveX控件”
  • 选择“添加”,然后选择CsdEft.ocx。显示所选的OCX。单击“下一步”。

    显示对话框:

      

    班级名称:TCscEFT

         

    托盘页面:ActiveX

         

    单位目录名称:C:\Delphi\Components

         

    搜索路径:$(BDS)\lib;$(BDSUSERDIR)...................

         

    生成组件包装 - 检查

  • 单击“下一步”。
  • 选择“安装到新软件包”
  • 输入EFTPOS作为包名称。
  • 单击“完成”。

    对话框显示:

      

    已安装软件包C:\ Documents and Settings ............. \ EFTPOS1.bpl。已注册以下组件:TCsdEft。

好的。一切都很好。

我可以在Component Pallet的ActiveX页面中看到该组件。

但是当我尝试选择组件并将其放在表单上时,我收到“未注册类”错误。

希望有人可以给我一些指向这里错误的指针。

1 个答案:

答案 0 :(得分:14)

听起来OCX本身没有使用命令行regsvr32.exe工具向Windows注册。您直接导入了OCX文件,因此IDE基于OCX的嵌入式TypeLibrary创建了一个组件包装器,但是包装器将尝试通过CoCreateInstance()实例化ActiveX对象,因此您将获得一个& #34;未注册的课程"如果CoCreateInstance()找不到OCX,则会出错。