如何使用循环逐个从TEdit获取文本

时间:2016-07-05 07:28:45

标签: c++ controls c++builder vcl editcontrol

我有100个TEdit对象(例如)

Edit1,Edit2,Edit3 ... Edit100

如何使用循环逐个获取文本?

3 个答案:

答案 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) ;
}