我需要在for循环中使按钮后面的数字递增。例如,button1变成button2等等。我尝试了附加一个变量进行递增,但C++ Builder会报错,指出“Button不是TMain的成员”。有没有办法实现最终目标或解决这个问题?
我需要在for循环中使按钮后面的数字递增。例如,button1变成button2等等。我尝试了附加一个变量进行递增,但C++ Builder会报错,指出“Button不是TMain的成员”。有没有办法实现最终目标或解决这个问题?
Button
实际上不是您的TMain
类的成员。FindComponent
方法以获取具有该名称的组件。for (int i = 1; i <= 2; ++i) {
std::string name = "Button" + IntToStr(i);
TButton* button = dynamic_cast<TButton*>(this->FindComponent(name));
}
这需要将按钮的Name
属性相应地设置。
另一种解决方案是放弃组件名称并将对象放入适当的容器中,例如vector
。例如,您可以覆盖Loaded
方法(在此处您可以确保已创建所有表单组件),并在那里填充一个向量:
void TMain::Loaded() {
TForm::Loaded();
this->m_buttons.push_back(Button1);
this->m_buttons.push_back(Button2);
}
for (std::vector<TButton*>::const_iterator it = m_buttons.begin();
it != m_buttons.end();
++it) {
// ...
}
button
的变量中。因此,请使用该变量来分配每个按钮的标题:button->Caption = Table2->FieldByName("ItemName")->AsString
。使用我的第二个示例:(*it)->Caption = ...
。我不确定你所说的“原始问题”是什么意思。你的问题中只描述了关于Button
不是成员的问题。我向你展示了它不需要成为成员,因为你可以通过其他方式访问按钮。 - Rob Kennedy