![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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