Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2012, 18:05   #1
Blade009
Новичок
Джуниор
 
Регистрация: 06.03.2012
Сообщений: 4
По умолчанию проблема с Edit' ом

У меня возникла такая проблема:
есть 64 Edit'a, можно ли как-то преобразовать их в массив и уже напрямую работать с массивом??
Blade009 вне форума Ответить с цитированием
Старый 06.03.2012, 18:51   #2
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

- конечно. Слишком у Вас их много
Код:
   /*     TEdit* maedit[77];  */
   for (int i=0;i<64;i++) {
       maedit[i] = new TEdit(Form1);
       maedit[i]->Parent = Form1;
       maedit[i]->Name = "Ed"+IntToStr(i+1);
       maedit[i]->Top = 240;
       maedit[i]->Left = 40+i*(maedit[i]->Width+16); // another prop. ...
   }
- создаете общую (глобальную) переменную (в примере - maedit размерностью 77) и в цикле устанавливаете свойства для каждого элемента массива. В дальнейшем будете к ним обращаться по индексу:
напр. maedit[box3->ItemIndex]->Text = "... ";

Ну, а если Вы их уже "нарисовали", то создайте массив AnsiString myEdits[64] и обработкой в цикле занесите туда значение Text от каждого EditX.

Последний раз редактировалось nick42; 06.03.2012 в 18:53.
nick42 вне форума Ответить с цитированием
Старый 06.03.2012, 19:11   #3
Blade009
Новичок
Джуниор
 
Регистрация: 06.03.2012
Сообщений: 4
По умолчанию

оо спасибо большое!!! всё получилось)))
Blade009 вне форума Ответить с цитированием
Старый 06.03.2012, 19:51   #4
Blade009
Новичок
Джуниор
 
Регистрация: 06.03.2012
Сообщений: 4
По умолчанию

а вот во втором варианте когда уже "нарисовал" не получается присвоить значения
такая конструкция не подходит
Код:
for (int i=0;i<64;i++)
{
  Edit[i]->Text ="1";
}
пишет ошибку
Код:
E2288 Pointer to structure required on left side of -> or ->*
Blade009 вне форума Ответить с цитированием
Старый 06.03.2012, 21:46   #5
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Потому, что неправильно; Edit4 - это имя компонента, но к нему нельзя вот так запросто обратиться, используя подстановы и замены. У меня нет "под рукой" Билдера, но это делается приблизительно так (в цикле):
Код:
 if ((String)Components[i]->ClassName == "TEdit")   ((TEdit *)Components[i])->Text = "1" ;

Последний раз редактировалось nick42; 06.03.2012 в 21:52.
nick42 вне форума Ответить с цитированием
Старый 06.03.2012, 21:47   #6
Drugnir
Форумчанин
 
Регистрация: 17.11.2010
Сообщений: 262
По умолчанию

Edit[i] - это переменная класса TEdit? Работать дальше тоже надо именно с переменной, а не с Edit, если хотите через i-ый элемент вызывать.
Drugnir вне форума Ответить с цитированием
Старый 06.03.2012, 23:10   #7
Blade009
Новичок
Джуниор
 
Регистрация: 06.03.2012
Сообщений: 4
По умолчанию

Спасибо, разобрался =)
Blade009 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с Edit -Wanderer- Общие вопросы Delphi 6 17.01.2012 10:55
Копирование строки из Edit в другой Edit. Ibanez Wizard Win Api 3 29.03.2011 02:46
Delphi, проблема с EDIT utrnjhyfgjktjy Помощь студентам 0 03.04.2010 14:06
Проблема с Edit Stein21 Общие вопросы Delphi 17 26.01.2009 00:23