Как использовать цикл для получения текста из TEdit по одному

У меня есть 100 объектов TEdit (например)

Edit1, Edit2, Edit3 … Edit100

Как использовать цикл, чтобы получить текст из них один за другим?

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

Другие решения

Примерно так должно работать:

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

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

Код основан на dynamic_cast преобразование: если приведение не выполнено, возвращается нулевой указатель, и вы можете пропустить текущий элемент управления.

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) ;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector