我想在运行时将新面板添加到我的表单中,但是我遇到的问题是,在将它们对齐到顶部时,它们不会按照我创建它们的顺序显示。
我使用DisableAlign()和EnableAlign()跟踪了这篇文章中的提示 How to dynamically create controls aligned to the top but after other aligned controls? 这适用于我添加的最初四个面板。
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TPanel * test;
Panel1->DisableAlign();
for(int i = 0; i<4; i++){
test = new TPanel(Panel1);
test->Caption = i;
test->Parent = Panel1;
test->Align = alTop;
}
Panel1->EnableAlign();
}
但是我想在点击按钮时添加另一个面板:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->DisableAlign();
TPanel * test;
test = new TPanel(Panel1);
test->Caption = 5;
test->Parent = Panel1;
test->Align = alTop;
Panel1->EnableAlign();
}
然后出现了:
有没有办法让对齐方式做我想做的事情而不用乱搞Top Settings或没有重建整个表单?
答案 0 :(得分:2)
这很简单。在设置Top
之前,您必须将Align
设置为适当的值。将Top
设置为底部面板底部的坐标。