如何在Builder XE6中的运行时动态添加组件?

时间:2015-09-24 10:24:24

标签: delphi c++builder

我想在运行时将新面板添加到我的表单中,但是我遇到的问题是,在将它们对齐到顶部时,它们不会按照我创建它们的顺序显示。

我使用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();
}

Screen 1

但是我想在点击按钮时添加另一个面板:

    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();
}

然后出现了:

Screen 2

有没有办法让对齐方式做我想做的事情而不用乱搞Top Settings或没有重建整个表单?

1 个答案:

答案 0 :(得分:2)

这很简单。在设置Top之前,您必须将Align设置为适当的值。将Top设置为底部面板底部的坐标。