2016-08-13 139 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