2011-05-24 208 views
5

我有一个自定义组件包,它可以编译和安装没有问题的安装。包的源文件位于我的库路径中,生成的bpl文件的位置也是如此。安装后,包和组件正确显示在设计包列表中。但是,它们不出现在工具面板中。Delphi 2009:使用组件包时出现“Class not found”

但是,任何时候我打开一个包含其中一个组件的窗体,我会得到一个未找到类的错误,并且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 
]); 
+0

你的搜索路径中是否有dcu文件? – 2011-05-24 12:49:42

+0

它们在Delphi的库路径中... – croceldon 2011-05-24 12:53:11

+0

程序在编译后是否正确启动?查看独立文本编辑器中的.dfm文件以查找任何异常情况。 – jszpilewski 2011-05-24 13:10:51

回答

0

您必须先注册你的组件这样

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

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

+0

我在我的设计时间包中有注册码 – croceldon 2011-05-24 13:05:02

1

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

错:

procedure register; 

implementation 

procedure register; 

正确:

procedure Register; 

implementation 

procedure Register; 
+0

这不是这里的情况。我已经正确注册大写。 – croceldon 2011-05-24 17:15:08

+2

尽管如此,还是一个不错的提示。它曾花费我几个小时来弄清楚。 – 2011-05-24 17:43:14

0

说服自己具有加入其中包含所述登记代码在包文件/项目源contains部的单元。

+0

不完全确定你的意思。我有一个运行时包 - qteSys.bpl和一个设计包 - qteSysDesign.bpl。注册码包含在设计包中。 – croceldon 2011-05-24 17:40:24

+0

那么,通常注册码(即'procedure Register')是在一个单独的单元中。人们很容易忘记将该单元添加到'.DPK'项目源文件的“contains”部分。 – NGLN 2011-05-24 17:55:06

相关问题