Войти

Показать полную графическую версию : *Решено* | Неожиданный вызов события OnClick в TRadioButton


Kelasant
04-04-2005, 20:35
Народ, помогите, плиз!
Я или билдер С++ 6.0 — кто-то из нас очень неправ.
Меняю я, значит, скромно где-то в программе свойство Checked одной из радиокнопок.
Но почему-то сразу при этом вызывается обработчик OnClick для этой радиокнопки.
Что за дела?! Мне совершенно не нужно в этот момент вызывать OnClick.

Savant
04-04-2005, 20:42
Kelasant
Виноват борландовский VCL :). Решение например такое (создаем в дополнение переменную ourChange):

// смена чекеда
ourChange = TRUE;
Control->Checked = FALSE;
...

а в обработчике OnClick пишем

if (ourChange) { ourChange = FALSE; return 0; };

Прошу прощения, если где-то что-то наврал, я на Билдере не программировал =)) . Решение даю, основываясь на Дельфях

Kelasant
04-04-2005, 21:04
В общем, ситуация несколько странная.
Оказывается, это не баг, а фича - почерпнуто из доки по соответствующему события TControl.
Если Чекед меняется, или устанавливается в тру - вызывается ОнКлик.
Сделано в виде исключения для внучка РадиоБаттона.
Не могу сказать, чтобы этот факт меня утешил.

За предложенное решение спасибо, Savant.
Хоть и не сильно красивое благодаря ВЦЛ-у, но действенное.




© OSzone.net 2001-2012