Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   *Решено* | Неожиданный вызов события OnClick в TRadioButton (http://forum.oszone.net/showthread.php?t=47638)

Kelasant 04-04-2005 20:35 312847

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

Savant 04-04-2005 20:42 312851

Kelasant
Виноват борландовский VCL :). Решение например такое (создаем в дополнение переменную ourChange):
Код:

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

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

if (ourChange) { ourChange = FALSE; return 0; };
Прошу прощения, если где-то что-то наврал, я на Билдере не программировал =)) . Решение даю, основываясь на Дельфях

Kelasant 04-04-2005 21:04 312856

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

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


Время: 09:47.

Время: 09:47.
© OSzone.net 2001-