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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 12:07   #1
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию обращение к именам компонентов в цикле

Пишется игра "Жизнь", для отображения живых/мёртвых клеток выбран компонент CheckBox, данные в массив из CheckBoxов вносятся из другого массива.
Подскажите, пожалуйста, как в цикле обращаться к CheckBoxам, т.е. чтобы менялся индекс CheckBox1, CheckBox2...
Если в переменную типа string сохранять полностью имя компонента А:='CheckBox'+inttostr(i), а потом писать что-то типа А.свойство - не работает.
JK0 вне форума Ответить с цитированием
Старый 23.09.2010, 12:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
with controls do
 for i:=0 to controlscount-1 do
  if control[i] is TCheckBox then TCheckBox(control[i]).четамнуна
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2010, 12:36   #3
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию

Спасибо! Всё работает!
JK0 вне форума Ответить с цитированием
Старый 23.09.2010, 12:49   #4
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Да нет, не всё.Делаю так:
Код:
With controls Do
      For i:=1 To controlscount Do
      Begin
            If control[i] Is TEdit Then
            Begin
                  X:=StrToInt(TEdit(Control[i]).Text);
                  Adder:=Adder*X;
            End;
      End;
В строке with controls do выдаёт ошибку '[ expected but Do Found'.как быть?
_-Re@l-_ вне форума Ответить с цитированием
Старый 23.09.2010, 12:56   #5
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию

Вот, из рабоче проги вырезан (а как "с потолка" без единой ошибки?):

with controls[i] do
for i:=0 to controlscount-1 do
if controls[i] is TCheckBox then
if <мои условия> then TCheckBox(controls[i]).State:=cbChecked else
TCheckBox(controls[i]).State:=cbUnChecked;
JK0 вне форума Ответить с цитированием
Старый 23.09.2010, 13:05   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
with controls do
Ой! Это я погорячился... Уберите эту строку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2010, 13:10   #7
JK0
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 26
По умолчанию

Да, без неё тоже всё работает
JK0 вне форума Ответить с цитированием
Старый 23.09.2010, 14:10   #8
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

Код:
procedure TTempForm.Button1Click(Sender: TObject);
var
  i: Integer;
  S: string;
begin
  for i:=0 to Pred(ControlCount) do
    If Controls[i] Is TEdit Then
    Begin
      S:= S+TEdit(Controls[i]).Text;
    End;
  ShowMessage(S);
end;
Обрабатывает Edit'ым лежащие на форме.


Или

функция FindComponent и F1 вам в помощь

Код:
TEdit(FindComponent('Edit' + IntToStr(i)));
P.S. начинать цикл нужно с 0, т.к. первый элемент Controls с индексом 0.
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива экземпляров класса по именам Ciberal Общие вопросы C/C++ 1 18.05.2010 23:08
Как Вы относитесь к кириллическим доменным именам?, пример зона .рф Levsha100 Свободное общение 43 26.10.2009 01:25
Ошибка в цикле Belokuraya Microsoft Office Excel 11 18.08.2009 15:52
Как выполнить условие по именам valerij Microsoft Office Excel 3 14.09.2008 21:55