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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2009, 19:24   #1
СиДжей
 
Регистрация: 15.05.2009
Сообщений: 3
По умолчанию Цикл и CheckBox'ы

Если подобный вопрос уже был - не бейте ногами, я новичок.
Идея цикла такова - есть двадцать Checkbox'ов, надо проверить сколько из них Checked и получить число "чекнутых" в переменную d.
Вот отрывок кода, компилятор ругается.
Подскажите как реализовать.

Код:
for i:= 1 to 20 do
if Checkbox[i].Checked=true then d:=d+1;
end;
СиДжей вне форума Ответить с цитированием
Старый 15.05.2009, 19:28   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

А что, в проге есть массив Checkbox, хранящий ссылки на двадцать CheckBox'ов? Судя по "ругани", такового нет. Тогда как они называются все эти 20 компонентов?
Скандербег вне форума Ответить с цитированием
Старый 15.05.2009, 19:35   #3
СиДжей
 
Регистрация: 15.05.2009
Сообщений: 3
По умолчанию

А как через массив реализовать это?
Они называются Checkbox1, Checkbox2, ..., Checkbox20.
СиДжей вне форума Ответить с цитированием
Старый 15.05.2009, 19:39   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Можно не организовывать, а просканировать все компоненты на форме и отобрать только CheckBox'ы.
Код:
  for I := 0 to Form1.ComponentCount-1 do begin
    if (Form1.components[I] is TCheckBox) and TCheckBox(Form1.components[I]).Checked 
    then 
      Inc(d);
Скандербег вне форума Ответить с цитированием
Старый 15.05.2009, 19:44   #5
СиДжей
 
Регистрация: 15.05.2009
Сообщений: 3
По умолчанию

Спасибо за совет
СиДжей вне форума Ответить с цитированием
Старый 15.05.2009, 22:11   #6
Небесный
Зелень
Форумчанин
 
Аватар для Небесный
 
Регистрация: 03.02.2007
Сообщений: 302
По умолчанию

Можно еще попробовать данный код реализовать вот так.

Код:
for i:= 1 to 20 do
if (FindComponent('Checkbox'+IntToStr(i)) as TCheckBox).Checked = true then d:=d+1;
end;
А, ругается, потому что нельзя записывать вот так - Checkbox[i]

Вот быстренько накинул, как можно. )))

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,d: integer;
begin
  d:=0;
  for i:= 1 to 5 do
    if (FindComponent('Checkbox'+IntToStr(i)) as TCheckBox).Checked = true
      then d:=d+1;
  Edit1.Text:=IntToStr(d);
end;

Последний раз редактировалось Небесный; 15.05.2009 в 22:31.
Небесный вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл do while S@muel Общие вопросы C/C++ 1 29.03.2009 23:01
Цикл For Each Bu$ter Microsoft Office Excel 5 24.09.2008 16:49
CheckBox'ы Abbatik Помощь студентам 2 05.01.2008 15:42
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34