15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как изменить состояние TCheckBox не вызывая собятия OnClick.

Компилятор: C++ Builder

Когда Вы изменяете состояние TCheckBox путём установки его свойства Checked, то срабатывает событие OnClick. Например:

CheckBox1->Checked = true;

то запустится обработчик CheckBox1Click.

Однако появление события OnClick не всегда желательно. Добиться этого можно путём отправки в CheckBox сообщения BM_SETCHECK. Параметр WParam этого сообщения может быть равен 1 (галочка установлена), или 0 (галочка снята). Параметр LParam всегда равен 0.

Следующая процедура имеет на входе два параметра: TCheckBox1 и CheckIt. Когда CheckIt равно true, то галка будет установлена, а false означает снятие галки:

void CheckNoClick(TCheckBox *CheckBox1, bool CheckIt)
{
  CheckBox1->Perform(BM_SETCHECK, CheckIt, 0);
}

А вот так эта функция используется:

CheckNoClick(CheckBox1, true);