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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2009, 17:13   #1
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию Как красивей проверить, установлены ли галочки на нескольких checkbox'aх?

Есть вариант:

Код:
if (not c1.checked) or (not c2.checked) or (not c3.checked) or (not c4.checked) or (not c5.checked) then servicechecked:=false;
Когда имена чекбоксов длинные, а самих элементов штук 15, как это красивее написать?
Может есть возможность сделать обобщающее выражение типа
Код:
if not ([c1+c2+c3+c4+c5].checked) then servicechecked:=false;
Ась?
mosq вне форума Ответить с цитированием
Старый 26.09.2009, 17:22   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, можно написать перебор всех чекбоксов на форме.
вот, типа так:
Код:
  servicechecked := true;
  for k:=0 to Form1.ComponentCount-1 do
     if Form1.Components[k] is TCheckBox then 
         if Not TCheckBox(Form1.Components[k]).Checked then
         begin
           servicechecked := false;
           break;
         end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2009, 17:41   #3
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию

Это не прокатит, так как существуют еще чекбоксы, которые не нужно проверять.
А разве boolean данные нельзя плюсовать\минусовать, чтобы результат тоже булевый получался?
mosq вне форума Ответить с цитированием
Старый 26.09.2009, 17:44   #4
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

в tag записываем некое число 123 и в код, предложенный Serge_Bliznykov меняем
Код:
 if Not TCheckBox(Form1.Components[k]).Checked then
на
Код:
if (Not TCheckBox(Form1.Components[k]).Checked) and (TCheckBox(Form1.Components[k])=123) then

Код:
А разве boolean данные нельзя плюсовать\минусовать, чтобы результат тоже булевый получался?
нет конечно, какой результат вы хотите получить true+true??
можно делать булевые операции: and or not...

Последний раз редактировалось Роман Радер; 26.09.2009 в 17:50.
Роман Радер вне форума Ответить с цитированием
Старый 26.09.2009, 18:03   #5
mosq
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 90
По умолчанию

Цитата:
нет конечно, какой результат вы хотите получить true+true??
0+0=0
0+1=1
1+1=1
вот так хочу

Но ладно, я совсем забыл про tag, думаю, это как раз выход и будет.
Спасибо.
mosq вне форума Ответить с цитированием
Старый 28.09.2009, 18:58   #6
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

Цитата:
0+0=0
0+1=1
1+1=1
вот так хочу
эта операция or называется.
false or false = false
false or true = true
true or true = true
Роман Радер вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как Как проверить кнопки мыши без OnMouseDown? Вадим Буренков Общие вопросы Delphi 3 22.05.2009 15:08
Как проверить является ли числом? killer12rus JavaScript, Ajax 1 18.05.2009 05:09
Как Проверить диаппазон komar73 Microsoft Office Excel 3 06.02.2009 12:28
Как проверить строку? nikleb PHP 6 07.07.2008 22:04