我有100个TEdit
对象(例如)
Edit1,Edit2,Edit3 ... Edit100
如何使用循环逐个获取文本?
答案 0 :(得分:1)
我建议使用一个数组,例如:
class TForm1 : public TForm
{
__published:
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
...
private:
TEdit* edits[100];
...
public:
__fastcall TForm1(TComponent *Owner);
...
};
__fastcall TForm1::TForm1(TComponent *Owner)
{
for(int i = 0; i < 100; ++i)
{
edits[i] = static_cast<TEdit*>(FindComponent("Edit"+IntToStr(i+1)));
}
}
...
for(int i = 0; i < 100; ++i)
{
// use edits[i]->Text as needed...
}
答案 1 :(得分:0)
这样的事情应该有效:
for (int i = 0; i < form->ControlCount; ++i)
{
TEdit *edit = dynamic_cast<TEdit *>(form->Controls[i]);
if (edit)
ShowMessage(edit->Text);
}
代码基于dynamic_cast
转换:如果转换失败,则返回空指针,您可以跳过当前控件。
答案 2 :(得分:0)
TEdit *tmpEdit = NULL ;
vector <AnsiString> tmpStr ;
for(int i = 0; i < 100; ++i)
{
tmpEdit = static_cast<TEdit*>(FindComponent("Edit"+IntToStr(i+1)));
tmpStr.push_back(tmpEdit->Text) ;
}