Показать полную графическую версию : *Решено* | Неожиданный вызов события OnClick в TRadioButton
Kelasant
04-04-2005, 20:35
Народ, помогите, плиз!
Я или билдер С++ 6.0 — кто-то из нас очень неправ.
Меняю я, значит, скромно где-то в программе свойство Checked одной из радиокнопок.
Но почему-то сразу при этом вызывается обработчик OnClick для этой радиокнопки.
Что за дела?! Мне совершенно не нужно в этот момент вызывать OnClick.
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.