2016-08-13 38 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-> Parent = ToolBar行を省略すると、すべてが問題なくなるため、問題行になると思われます。

+0

ドン」ツールボタンに親を割り当てる必要があると思われます。ツールバーはそれをしません。 –

+0

ダビデを試してみましたが、ボタンは表示されません。 Btn-> Parentをコンストラクタが実行された後に割り当てるだけで、ボタンを表示できるようになりました。ありがとうレミー。 – NoComprende

答えて

0

ToolButtonにParentを割り当てるには、ツールバーに割り当てられたHWNDが必要です。これには、割り当てられたHWNDを持つParentが必要です。以下同様です。しかし、あなたの編集ボックスはコンストラクタが呼び出されたときにまだ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

関連する問題