2016-08-13 70 views
0

我已經簽出了許多類似標題的主題,但他們沒有幫助。下面編譯並安裝到組件面板,但是當我嘗試將組件添加到面板時,我收到了在主題標題中提到的錯誤消息。任何人都可以解釋爲什麼?控制''沒有父窗口

__fastcall TEditBox::TEditBox(TComponent* Owner) : TGroupBox(Owner) 
{ 
    ToolBar=new TToolBar(this); 
    ToolBar->Parent=this; 
    TToolButton *Btn=new TToolButton(ToolBar); 
    Btn->Parent=ToolBar; 
} 

如果我省略了Btn->父=工具欄線一切正常,從而想必這就是問題所在行。

+0

別您認爲您需要爲工具按鈕指定父級。工具欄沒有這樣做。 –

+0

嘗試過大衛,但沒有按鈕顯示。只有這樣才能讓按鈕顯示的是在構造函數執行後分配Btn-> Parent。 – NoComprende

回答

0

分配工具按鈕的Parent需要工具欄具有分配的HWND,這需要它具有Parent以及分配的HWND,依此類推。但是當您的EditBox的構造函數被調用時,您的編輯框沒有Parent(或Name),所以ToolBar還不能分配HWND,因此錯誤。

如果你希望你的工具欄有在運行時默認的按鈕,你需要按鈕的創建移到編輯框的虛擬Loaded()方法(甚至SetParent()方法),例如:

__fastcall TEditBox::TEditBox(TComponent* Owner) 
    : TGroupBox(Owner) 
{ 
    ToolBar=new TToolBar(this); 
    ToolBar->Parent=this; 
} 

void __fastcall TEditBox::Loaded() 
{ 
    TGroupBox::Loaded(); 
    TToolButton *Btn=new TToolButton(ToolBar); 
    Btn->Parent=ToolBar; 
} 
+0

謝謝雷米。我去了SetParent路線,以便在設計時顯示按鈕(真實代碼有幾個)。 – NoComprende

相關問題