1

我有 100 个对象TEdit(例如)

编辑 1、编辑 2、编辑 3... 编辑 100

如何使用循环从它们中一一获取文本?

4

3 回答 3

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...
}
于 2016-07-05T19:06:36.917 回答
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) ;
}
于 2016-07-08T16:10:31.110 回答
0

像这样的东西应该工作:

for (int i = 0; i < form->ControlCount; ++i)
{
  TEdit *edit = dynamic_cast<TEdit *>(form->Controls[i]);

  if (edit)
    ShowMessage(edit->Text);        
}

该代码基于dynamic_cast转换:如果转换失败,则返回一个空指针,您可以跳过当前控件。

于 2016-07-05T07:39:59.033 回答