【发布时间】:2020-07-06 09:04:04
【问题描述】:
我想动态创建一系列 Frame 组件,然后将指针保存到向量中。
我能够毫无问题地动态创建 TEdit 组件,但是如果我将 TEdit 替换为框架组件(包含编辑框)的名称,程序会出错。将创建第一帧,但创建第二帧时出错,说明“外部异常 EEFFACE”
这里是相关代码。请注意,如果我将 TFrame2 替换为 TEdit,它就可以工作。
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 次后出现错误消息。
这就是我希望它在单击两次后的样子。
这是我用 TEdit 替换 TFrame2 时的样子,点击 3 次后。
-
编辑
如果我尝试硬编码创建两个框架,我在第一次点击时会收到相同的错误。
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
在这篇文章中
Can FireMonkey frames be created dynamically?
我看到一条评论指出
我应该在这里注意,似乎框架对象需要在创建后立即手动分配一个唯一的 Name 属性,至少在使用 C++ 时,否则创建的下一个相同类型的框架对象将尝试使用与第一个。
【问题讨论】:
标签: c++ firemonkey c++builder tframe