Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
8 / 11 / 16
Регистрация: 30.09.2013
Сообщений: 90
1

Изменить состояние нескольких CheckBox в цикле

24.04.2014, 01:43. Показов 2265. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На форме размешены 18 CheckBox'ов и самым порнографическим способом им присваивается значение параметра Visible True
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CheckBox1.Visible:=False;
CheckBox2.Visible:=False;
CheckBox3.Visible:=False;
CheckBox4.Visible:=False;
CheckBox5.Visible:=False;
CheckBox6.Visible:=False;
CheckBox7.Visible:=False;
CheckBox8.Visible:=False;
CheckBox9.Visible:=False;
CheckBox10.Visible:=False;
CheckBox11.Visible:=False;
CheckBox12.Visible:=False;
CheckBox13.Visible:=False;
CheckBox14.Visible:=False;
CheckBox15.Visible:=False;
CheckBox16.Visible:=False;
CheckBox17.Visible:=False;
CheckBox18.Visible:=False;
По нажатию кнопки хочу сделать чтото типо счетчика
for I:=1 to 18 do
If CheckBox i .Visible=False then begin
и тут код
Так вот вопрос как же сделать так чтобы вместо i подставлялось значение от 1 до 18. Если просто написать Checkboxi.Visible То это само собой не правильно. Надеюсь обьяснил доступно
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2014, 01:43
Ответы с готовыми решениями:

Изменить состояние Checkbox в таблице
Всем привет! Есть простая таблица из двух полей login и status поле (status содержит в себе либо...

Как изменить состояние многих CheckBox на форме в один прием
Товарищи, наверное нубский вопрос, но если у меня есть 25 чекбоксов (0-24 соответственно), то как...

Можно ли изменить состояние checkBox без срабатывания события CheckedCanged?
static class Class1 { public static int a = 0; } private void checkBox1_CheckedCanged(object...

Как изменить свойства всех checkbox в цикле?
На форме есть 15 чекбоксов. Их имена ch_1, ch_2....ch_15. Как изменить их свойства (например...

11
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,251
24.04.2014, 02:32 2
Цитата Сообщение от Sharkboy Посмотреть сообщение
Так вот вопрос как же сделать так чтобы вместо i подставлялось значение от 1 до 18.
А обязательно нужно дать именно "порнографическое" решение?
0
8 / 11 / 16
Регистрация: 30.09.2013
Сообщений: 90
24.04.2014, 02:36  [ТС] 3
Цитата Сообщение от northener Посмотреть сообщение
А обязательно нужно дать именно "порнографическое" решение?
Любое сойдет
0
5784 / 4526 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
24.04.2014, 07:00 4
бывает так, что решение "в лоб" - самое подходящее для решения задачи.
здесь именно так.

вам же не кажется что это получше:
Delphi
1
2
3
4
5
6
7
8
9
for i:=0 to CheckBoxOwner.ComponentCount-1 do
begin
  if (CheckBoxOwner.ComponentCount[i] is TCheckBox) 
  and (CheckBoxOwner.ComponentCount[i].name.StartWith='CheckBox')
  and (strtointdef(copy(CheckBoxOwner.ComponentCount[i].name,9,2),0) in [1..18]) then
  begin
     (CheckBoxOwner.ComponentCount[i] as TCheckBox).visible := false;
  end;
end
1
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
24.04.2014, 09:32 5
krapotkin, можно еще проще
Delphi
1
2
3
4
5
6
var i: Integer;
begin
for i :=0 to form1.ComponentCount-1 do begin
    if form1.Components[i].ClassNameIs('TCheckBox') then TCheckBox(form1.Components[i]).Visible :=False;
   end;
end;
1
5784 / 4526 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
25.04.2014, 06:08 6
droider,
не вижу разницы.
мой код просто полностью идентичен исходному за счет второго и третьего условий и использует "мягкое" приведение типов ))
если вчитаться, ТС просил не "все чекбоксы" а "с 1 по 18"
даже если там нет других...
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
25.04.2014, 09:27 7
Цитата Сообщение от krapotkin Посмотреть сообщение
если вчитаться, ТС просил не "все чекбоксы" а "с 1 по 18"
а если еще внимательнее?
Цитата Сообщение от Sharkboy Посмотреть сообщение
На форме размешены 18 CheckBox'ов
о чем это говорит? Здесь не сказано" столько-то checkbox и только с 1 по 18 из них скрыть".
Если CheckBox'ов будет неизвестное количество, например, или больше 18, что тогда?

Цитата Сообщение от krapotkin Посмотреть сообщение
мой код просто полностью идентичен
Цитата Сообщение от krapotkin Посмотреть сообщение
не вижу разницы
очень жаль. Можно написать код навороченным, а можно проще.
0
5784 / 4526 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
25.04.2014, 10:08 8
смешной ты))
вопрос как же сделать так чтобы вместо i подставлялось значение от 1 до 18
0
Житель Земли
3002 / 3004 / 391
Регистрация: 26.07.2011
Сообщений: 11,463
Записей в блоге: 1
25.04.2014, 10:13 9
Цитата Сообщение от krapotkin Посмотреть сообщение
смешной ты))
krapotkin, да потому что по условию 18 ЧБ, а если бы было 24, ТС написал бы "с 1 до 24". не будь занудой и не занимайся говонокодированием
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
25.04.2014, 10:19 10
Цитата Сообщение от krapotkin Посмотреть сообщение
смешной ты))
Скорее наоборот.
Цитата Сообщение от krapotkin Посмотреть сообщение
вопрос как же сделать так чтобы вместо i подставлялось значение от 1 до 18
имеется в виду, как разом перебрать все 18 чекбоксов, имеющихся на форме и скрыть их, а не прописывать каждый чекбокс по отдельности!
Еще раз: чекбоксов может быть неизвестное количество или больше 18. Это надо учитывать!
0
5784 / 4526 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
25.04.2014, 10:37 11
приятно, телепаты вокруг ) я тоже хочу поиграть в вашу игру "имеется в виду"

имеется в виду, что настоящим неговонокодерам было бы легко удалить ограничивающие условия

Delphi
1
2
and (CheckBoxOwner.ComponentCount[i].name.StartWith='CheckBox')
 and (strtointdef(copy(CheckBoxOwner.ComponentCount[i].name,9,2),0) in [1..18])
и чудесным образом код бы совпал...
не смогли
0
Эксперт Pascal/Delphi
4912 / 2781 / 853
Регистрация: 04.10.2012
Сообщений: 10,121
25.04.2014, 10:43 12
Цитата Сообщение от krapotkin Посмотреть сообщение
было бы легко удалить ограничивающие условия
т.е. Вам проще повторно вносить изменения в код, чем предусмотреть возможные проблемы?
Тогда ладно. Практика всему научит.
Цитата Сообщение от krapotkin Посмотреть сообщение
телепаты вокруг
телепатом быть не нужно. Просто это очевидно.
Удачи!
0
25.04.2014, 10:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2014, 10:43
Помогаю со студенческими работами здесь

Изменить значение сразу нескольких CheckBox
Как изменить значение нескольких Checkbox, не писать же Checkbox1.Checked:= false;...

Изменить значение сразу нескольких CheckBox
Есть много чекбокосв (например 100) как мне лучше реализвовать груповое включение наппример... ...

Изменить текст нескольких label в цикле
Привет Хочу сделать что то типа for i = 1 to 16 (label & i).text = i & " тратата!" next i...

Изменить в цикле свойство нескольких Label
Вопрос для гуру: Имеем: Label1.ForeColor = Color.Green Label2.ForeColor = Color.Green...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru