| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Организация цикла для компонентов |
| Автор: Abrek 1.4.2004, 13:20 |
| Извините за потенциально ламерский вопрос, но обстоятельства вынуждают. Пишу под Borland Builder5. Допустим у меня на форме 10 компонентов TEdit: Edit1, Edit2,.....Edit10. Можно ли совершать как-то преобразования с ними в цикле? Надеюсь будет понятно: fot(i=1;i<10;i++) { Edit(i).Text="666"; } Как это организовать по-настаящему? |
| Автор: Borisff2003 1.4.2004, 14:22 | ||
и надеемся что едиты это действительно эдиты |
| Автор: Abrek 1.4.2004, 15:22 |
| Огромное пасибо! |
| Автор: DenDen 2.4.2004, 15:39 |
| Вообще говоря, имеются еще 2 банальных пути, не требующие, однако, просмотра ысех компонентов и кастов(вообще, утверждается что cast'ы довольно длительная операция). Путь 1) объявления массива ( void**) и вручную присваевание разным едитам разных указателей. // something .... // void** my_mas; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { my_mas=(void*)malloc(40); my_mas[0]=(void*)Edit1; my_mas[1]=(void*)Edit2; my_mas[2]=(void*)Edit3; my_mas[3]=(void*)Edit4; my_mas[4]=(void*)Edit5; my_mas[5]=(void*)Edit6; my_mas[6]=(void*)Edit7; my_mas[7]=(void*)Edit8; my_mas[8]=(void*)Edit9; my_mas[9]=(void*)Edit10; } void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i=0;i<10;i++) ((TEdit*)my_mas[i])->Text="Hello World"; } ////something Способ 2) Применяется, когда Едиты(много) или другие компоненты(еще больше) располагаются в вполне определенном порядке(например в колонку). В этом случае их лучше создавать динамически: //something TEdit** Ed; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Ed=new TEdit*[10]; int Top=something_1; int Height=something_2; int Left=something_3; for(int i=0;i<10;i++) { Ed[i]=new TEdit(this); Ed[i]->Parent=this; Ed[i]->Left=Left; Ed[i]->Top=Top; Ed[i]->Height=Height; Top+=Height; } } void __fastcall TForm1::Button1Click(TObject *Sender) { for(int i=0;i<10;i++) Ed[i]->Text="Hello Wrld"; } |
| Автор: Дрон 3.4.2004, 21:24 | ||
Только зачем тип void*? Проще объявить массив типа TEdit* тогда никаких cast'ов вообще не надо |