我想动态创建一系列 Frame 组件,然后将指针保存到向量中。
我能够毫无问题地动态创建 TEdit 组件,但是如果我将 TEdit 替换为框架组件的名称(包含编辑框),程序将出错。将创建第一帧,但在创建第二帧时出错,说明“外部异常 EEFFACE”
这是相关的代码。请注意,如果我用 TEdit 替换 TFrame2,它可以工作。
class TForm1 : public TForm
{
...
public: // User declarations
std::vector<TFrame2*> fields;
...
};
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TFrame2* temp = new TFrame2 (Layout1);
temp->Parent = Layout1;
temp->Align = TAlignLayout::Top;
fields.push_back(temp);
count++;
}
这是单击后的样子。
单击 2 次后出现错误消息。
这就是我希望它在两次点击后的样子。
这就是我在点击 3 次后用 TEdit 替换 TFrame2 时的样子。
-
编辑
如果我尝试对两个框架的创建进行硬编码,第一次单击时会出现相同的错误。
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TFrame2* temp = new TFrame2 (Layout1);
temp->Parent = Layout1;
temp->Align = TAlignLayout::Top;
fields.push_back(temp);
count++;
TFrame2* temp1 = new TFrame2 (Layout1);
temp1->Parent = Layout1;
temp1->Align = TAlignLayout::Top;
fields.push_back(temp1);
count++;
}
-
编辑 2
在这篇文章中
我看到一条评论说
我应该在这里注意,似乎框架对象需要在创建后立即手动分配一个唯一的 Name 属性,至少在使用 C++ 时,否则创建的下一个相同类型的框架对象将尝试使用与第一个相同的名称.