Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Вниз

CheckBox   Найти похожие ветки 

 
Fostr   (2006-10-05 11:26) [0]

Господа! Есть четыре 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-ы.


 
Sergey13 ©   (2006-10-05 11:37) [1]

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


 
clickmaker ©   (2006-10-05 11:38) [2]

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;


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

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


 
Ketmar ©   (2006-10-05 16:38) [4]

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


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

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


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

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


 
Ketmar ©   (2006-10-05 18:32) [7]

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


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

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


 
Ketmar ©   (2006-10-05 20:22) [9]

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.04 c
2-1160235614
Iamdanil
2006-10-07 19:40
2006.10.22
Определить имя компьютера по имени сетевой папки


2-1159963951
Sergey_b
2006-10-04 16:12
2006.10.22
Динамическое создание форм


2-1159968384
Виктория
2006-10-04 17:26
2006.10.22
TMemo


2-1159976527
ArtemESC
2006-10-04 19:42
2006.10.22
МНОГА указателей...


3-1156506680
иван8511
2006-08-25 15:51
2006.10.22
Перехватить ошибку Key violation





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский