Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CheckBox [D6, 2000, XP]


Fostr ©   (2006-10-05 11:26:00) 

Господа! Есть четыре CheckBox-а (B1, B2, B3, B4 : TCheckBox). Стоит задача следующая:
При нажатии на B1 значения B2, B3 и B4 (независимо от их текущего состояния) должны стать Checked=True если B1 стал Checked=True и False, если B1 стал False. ЭТА ЗАДАЧА В НАСТОЯЩИЙ МОМЕНТ РЕШЕНА, но пользователю так же дается возможность присваивать (то есть, кончено, кликать по ним) B2, B3, B4 в состояние Checked=True или False.
При этом нужно что бы при кликании по какаому-то из указанных CheckBox-ов проверялось, выбраны ли B2, B3, B4 в состояние Checked=True или False. В первом случае автоматически B1 должен переключиться в состояние Checked=True, во втором - Checked=False.

Прошу подсказать как это реализовать. Простая проверка
If(B2.Checked=True) and (B3.Checked=True) and (B4.Checked=True) then
(B1.Checked:=True) не дает желаемогло результата, так как при присваивании B1 состояние Ckecked= True срабатывает событие OnClick для B1 и выбираются все CheckBox-ы.


Ketmar   (2006-10-05 20:22:00) [1]

>[8] Fostr 5-Oct-2006, 18:35
>А в принцыпе, то, что я описывал выше
>реально сделать? (Так, на будущее)
в принципе -- реально сделать почти всё. вопрос в целесообразности. %-)


Fostr   (2006-10-05 18:35:00) [2]

Хм..  не подумал об этом - отличная мысль, так и сделаю! А в принцыпе, то, что я описывал выше реально сделать? (Так, на будущее)


Ketmar   (2006-10-05 18:32:00) [3]

а может, всё-таки переделать интерфейс? если я правильно понял, то обычно такое далется, например, при помощи запрещения всех checkbox'ов, если b1 не отмечен. имо, это более понятно и нормально, нежели самопроизвольно меняющийся checkbox.


Fostr   (2006-10-05 18:24:00) [4]

Слово "встают" читать "оказываются" в состоянии... так более правильно.


Fostr   (2006-10-05 18:22:00) [5]

Юзер не должен в нее "въезжать". Согласен, словесное описание хреновое...
Юзер может жать либо на B2, либо на B3, либо на B4. Если после нажатия юзера на какой-то из этих Checkbox все три (B2, B3, B4) "встают" в состояние Checked, то B1 автоматом (без вмешательства юзера) должен "встать" в состояние Checked. И наоборот, если все три (B2, B3, B4) "встают" в состояние Not Checked, то B1 автоматом (без вмешательства юзера) должен "встать" в состояние Not Checked.


Ketmar   (2006-10-05 16:38:00) [6]

я в словесное описание "не въехал". ты думаешь, юзер "въедет" в подобную логику?


Fostr   (2006-10-05 11:45:00) [7]

Всем спасибо большое! Буду реализовывать ваши советы!


clickmaker   (2006-10-05 11:38:00) [8]

CheckBox1.OnClick := nil;
if CheckBox2.Checked and CheckBox3.Checked and CheckBox4.Checked then
 CheckBox1.Checked := true
else if not (CheckBox2.Checked or CheckBox3.Checked or CheckBox4.Checked) then
 CheckBox1.Checked := false;
CheckBox1.OnClick := CheckBox1Click;


Sergey13   (2006-10-05 11:37:00) [9]

Я запутался. 8-)
1. Делай все в одном обработчикена все боксы.
2. Писать If (B2.Checked=True)не стоит достаточно просто If B2.Checked


Наверх

Титульная страница Поиск, карта сайта Написать письмо