2011-05-24 77 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