全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2266
推到 Plurk!
推到 Facebook!

我想請教關於自製的元件安裝不進去的問題

答題得分者是:daldal
GGump
一般會員


發表:2
回覆:16
積分:8
註冊:2006-08-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-30 09:14:31 IP:118.166.xxx.xxx 訂閱
我想請教的問題是:我在使用Borland C++ Builder 6.0安裝我自訂的元件時,在Package - dclusr.bpk底下真的可以看得到Contains中有包含我做的元件,我有確實地先Build再Install。

然之前曾經成功過,但是現在只會顯示我指定的Package裝進去了,也就是會顯示"Package C:\……\dclusr60.bpl has
been installed.",而並不會顯示完整的"The following new component(s) have been
registered: Txxxxxx、Tyyyyyy……"。
所以在安裝進的Package列表中有我指定的,但是該Package底下是空的沒有包含任何元件,即Projects->Options…->Packages中,Borland User Components前的核取盒是有勾的,但是對該項按了Components,Installed components的內容是空的。
另外在登錄編輯程式(regedit.exe)中:我的電腦\HKEY_CURRENT_USER\Software\Borland\C Builder\6.0\Palette中的My Components資料值是空的。
請問像這種情形應該要如何解決呢?
daldal
高階會員


發表:6
回覆:102
積分:226
註冊:2007-06-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-30 17:58:15 IP:220.130.xxx.xxx 未訂閱
1.當元件不存在於元件盤中,才會出現顯示完整的"The following new component(s) have been registered: Txxxxxx、Tyyyyyy……"。
2.若是只修改元件,重新Complier Install只會出現顯示"Package C:\……\dclusr60.bpl has been installed."
3.沒有出現在元件盤的問題,請檢查一下namespace有沒有錯誤,
例如:namespace Txxxxxxx (第一個字母大寫,後面小寫,不然安裝成功也不會顯示在元件盤中)
RegisterComponents("xxxxx", classes, 0); (xxxxx是不是有指定到你的類別中,會不會裝到別的類別裡沒發現到?)
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-04-30 18:22:23 IP:61.222.xxx.xxx 訂閱
Packages中,Borland User Components前的核取盒是有勾的,但是對該Components,Installed components的內容是空的

表示 元件並沒有使用 RegisterComponents 註冊元件。
當然空空如也。

範例在元件單元中新增
procedure Register;
...

procedure Register;
begin
RegisterComponents(分頁名稱, [元件]);
end;
GGump
一般會員


發表:2
回覆:16
積分:8
註冊:2006-08-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-04-30 23:17:38 IP:118.166.xxx.xxx 訂閱
其實我有提到,曾經成功過,所以我不認為程式碼的部分有問題

TColoButton.cpp如下:
[code cpp]
static inline void ValidCtrCheck(TColorButton *)
{
new TColorButton(NULL);
}
//---------------------------------------------------------------------------
__fastcall TColorButton::TColorButton(TComponent* Owner)
: TButton(Owner), FFocusColor(clWindowFrame),
FShadowColor(clBtnShadow), FLightColor(clBtnHighlight),
FCanvas(new TCanvas()),Fdraw_as_default(false)
{
}
//---------------------------------------------------------------------------
……
//---------------------------------------------------------------------------
namespace Colorbutton
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid (TColorButton)};
RegisterComponents("My Components", classes, 0);
}
}
//---------------------------------------------------------------------------
[/code]

TTextTimer.cpp如下
[code cpp]
static inline void ValidCtrCheck(TTextTimer *)
{
new TTextTimer(NULL);
}
//---------------------------------------------------------------------------
__fastcall TTextTimer::TTextTimer(TComponent* Owner)
: TStaticText(Owner), FTimeUnit(tuSecond), FInterval(1),
FStartTime(0), FStopTime(0), FCountDirection(cdForward)
{
FOnTimeUp = TimeUp;
Timer_Unit = new TTimer(this);
Timer_Unit->OnTimer = Timer_UnitTimer;
_Time = 0;
_UpdateCaption();
Alignment = taCenter;
AutoSize = false;
BorderStyle = sbsSingle;
}
//---------------------------------------------------------------------------
……

//---------------------------------------------------------------------------
namespace TextTimer
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid (TTextTimer)};
RegisterComponents("My Components", classes, 0);
}
}
//---------------------------------------------------------------------------
[/code]
編輯記錄
GGump 重新編輯於 2008-04-30 23:19:07, 註解 無‧
GGump
一般會員


發表:2
回覆:16
積分:8
註冊:2006-08-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-04-30 23:27:26 IP:118.166.xxx.xxx 訂閱
嗯,只提成功過這樣的情形描述不夠明確,所以我補充說清楚
TColorButton有成功過,而我已經使用該元件進行後續的開發了
但是TTextTimer從未成功安裝進去
現在非常希望這個元件能安裝成功
請大家幫忙
daldal
高階會員


發表:6
回覆:102
積分:226
註冊:2007-06-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-05-01 09:51:22 IP:220.130.xxx.xxx 未訂閱
我前面已經說囉...

namespace
TextTimer <----只有開頭能大寫
不然註冊後會無法在元件盤看到
你把它改成
namespace
Texttimer
再試試看吧
GGump
一般會員


發表:2
回覆:16
積分:8
註冊:2006-08-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-05-01 17:11:09 IP:118.166.xxx.xxx 訂閱
確實解決了,謝謝。
GGump
一般會員


發表:2
回覆:16
積分:8
註冊:2006-08-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-05-01 17:32:22 IP:118.166.xxx.xxx 訂閱
再補充說明一下,如同我之前提到的,namespace關鍵字之後,接上不只有首字大寫的識別字有機會安裝成功,目前的平均成功率約2%
而且僅首字為大寫的格式的要求,只有在範例和精靈會產生,關鍵字說明中並沒有
由於當時不認為安裝元件的步驟得視為Fuzzy Set,而在腦中推論而得的步驟的正確性讓我非常難以理解
系統時間:2024-05-05 6:34:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!