我需要在按钮后获取数字以在 for 循环中递增。例如,button1 变成了 button2,等等。我尝试附加一个递增的变量,但 C++ Builder 给出了一个错误,提示“Button 不是 TMain 的成员”。有没有办法实现最终目标或解决这个问题?
问问题
176 次
1 回答
2
您不能在运行时从其他人那里构造新的标识符。编译器是正确的,它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) {
// ...
}
于 2012-07-03T13:38:51.483 回答