【问题标题】:Delphi 2009: "Class not found" when using component packageDelphi 2009:使用组件包时“找不到类”
【发布时间】:2011-08-31 22:12:33
【问题描述】:

我有一个自定义组件包,可以毫无问题地编译和安装安装。包的源文件在我的库路径中,生成的 bpl 文件的位置也是如此。安装后,包和组件正确显示在设计包列表中。但是,它们不会出现在工具面板中。

但是,每当我打开包含其中一个组件的表单时,我都会收到未找到类的错误,并且 dfm 将无法打开。项目编译正常,我可以查看所有的pas文件,但是表单不会显示在设计器中。

我在这里做错了什么?如何让组件在表单设计器中正确显示?

这是我的组件注册码:

  RegisterComponents('QuoteSystem', [
    TFnpLabelNumericEdit,
      TPBxCheckBox,
      TPBxCheckBoxSub,
      TPBxComboBoxSub,
      TPBxListBoxSub,
      TPBxRadioItemSub,
      TFnpNumericEdit,
      TQGlobals,
      TPBItem,
      TPBxCheckListBox,
      TPBxCheckListBox,
      TPBxComboBox,
      TPBxDateEdit,
      TPBxDescList,
      TPBxEdit,
      TpbxInteger,
      TPBxLabel,
      TPBxLabeledEdit,
      TPBxLabelNumericEdit,
      TPBxListBox,
      TPBxMemo,
      TPBxNumericEdit,
      TPBxQuoteElement,
      TPBxRadioGroup,
      TPBxRadioItem,
      TPBxRichEdit,
      TPBxSpinEdit,
      TpbxSummaryGlobals,
      TAlignEdit
]);

【问题讨论】:

  • 您的搜索路径中有 dcu 文件吗?
  • 它们在 Delphi 的库路径中...
  • 程序编译后是否正确启动?在独立的文本编辑器中查看 .dfm 文件是否有任何异常。
  • 它启动并运行良好......组件甚至没有出现在工具面板中。
  • 如果组件没有显示在选项板上,则说明设计时包注册不顺利。它可能与某些配置文件中不同的 Delphi 版本设置有关。如果他们不知道当前使用的版本中的 Delphi,某些定义可能会使代码非常糟糕。

标签: delphi delphi-2009


【解决方案1】:

发生这种情况的典型错误是将Register 在接口部分或实现部分以小写或任何其他不正确的大小写。

错误:

procedure register;

implementation

procedure register;

正确:

procedure Register;

implementation

procedure Register;

【讨论】:

  • 这里不是这样。我已经正确注册大写。
  • 仍然是一个很好的提示。曾经我花了好几个小时才弄明白。
【解决方案2】:

你必须像这样注册你的组件

RegisterComponents ('Custom', [TMyCustomComp1, TMyCustomComp2]);

否则 IDE 将无法在表单设计器中创建组件。

【讨论】:

    【解决方案3】:

    确信已将包含注册代码的单元添加到包文件/项目源中的contains 部分。

    【讨论】:

    • 不太清楚你的意思。我有一个运行时包 - qteSys.bpl 和一个设计包 - qteSysDesign.bpl。注册码包含在设计包中。
    • 嗯,通常注册码(即procedure Register)在一个单独的单元中。人们很容易忘记将该单元添加到您的.DPK 项目源文件的contains 部分。
    猜你喜欢
    • 2011-07-10
    • 2010-10-05
    • 2011-07-12
    • 2011-05-03
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    相关资源
    最近更新 更多