我有 100 个对象TEdit
(例如)
编辑 1、编辑 2、编辑 3... 编辑 100
如何使用循环从它们中一一获取文本?
我有 100 个对象TEdit
(例如)
编辑 1、编辑 2、编辑 3... 编辑 100
如何使用循环从它们中一一获取文本?
我建议为此使用数组,例如:
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...
}
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) ;
}
像这样的东西应该工作:
for (int i = 0; i < form->ControlCount; ++i)
{
TEdit *edit = dynamic_cast<TEdit *>(form->Controls[i]);
if (edit)
ShowMessage(edit->Text);
}
该代码基于dynamic_cast
转换:如果转换失败,则返回一个空指针,您可以跳过当前控件。