控件没有 parent window
Control has no parent window
我查看了很多标题相似的话题,但都没有帮助。
以下编译并安装到组件选项板,但是当我尝试将组件添加到面板时,我收到线程标题中提到的错误消息。
谁能解释一下为什么?
__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
行,一切正常,所以大概是问题所在?
分配一个 ToolButton 的 Parent
需要 ToolBar 有一个分配的 HWND,这需要它有一个 Parent
和一个分配的 HWND
,依此类推。但是你的 EditBox 在调用它的构造函数时还没有分配 Parent
(或 Name
),所以 ToolBar 还不能分配 HWND
,因此错误。
如果你想让你的工具栏在运行时有一个默认按钮,你需要将按钮的创建移动到EditBox的虚拟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;
}
我查看了很多标题相似的话题,但都没有帮助。
以下编译并安装到组件选项板,但是当我尝试将组件添加到面板时,我收到线程标题中提到的错误消息。
谁能解释一下为什么?
__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
行,一切正常,所以大概是问题所在?
分配一个 ToolButton 的 Parent
需要 ToolBar 有一个分配的 HWND,这需要它有一个 Parent
和一个分配的 HWND
,依此类推。但是你的 EditBox 在调用它的构造函数时还没有分配 Parent
(或 Name
),所以 ToolBar 还不能分配 HWND
,因此错误。
如果你想让你的工具栏在运行时有一个默认按钮,你需要将按钮的创建移动到EditBox的虚拟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;
}