Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
 Аватар для bad_luck_ho_ho
2 / 2 / 1
Регистрация: 19.07.2015
Сообщений: 37

Общий обработчик событий для однотипных компонентов (например CheckBox)

23.07.2015, 09:52. Показов 3643. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Прошу помощи в решении данного вопроса.
Возникла маленькая проблемка.
Есть массив из CheckBox'ов (40 штук !!!! Так нада !!!) В общем, создавать для каждого CheckBox'a событие "OnValueChange" не вариант, тем более действие на изменение состояния CheckBox'a однотипное.
Напрашивается вариант с единым обработчиком события, с определением источника события по тагу...
Как это сварганить , Я пока не разобрался.
Если у кого то были похожие задачи, прошу поделиться примерчиком.....

ЗЫ: Заранее благодарю, за конструктивные ответы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.07.2015, 09:52
Ответы с готовыми решениями:

Общий обработчик событий CheckBox на листе Excel (не форме)
Доброго времени суток! Для каждого чекбокса на листе создается свой отдельный обработчик нажатия : CheckBox_Clicked() Попробовал...

Создать обработчик событий для группы однотипных объектов на форме Access
Здраствуйте, уважаемые знатоки) Пишу VBA код в Access2003. Ситуация следующая: на форме есть массив однотипных контролов; хочу настроить их...

Обработчик событий для нескольких компонентов
В моей программе есть несколько компонентов TEdit, а так же StringGrid. Суть в том, чтобы разрешить вводить в Edit и в ячейки StringGrid...

8
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
23.07.2015, 10:16
Лучший ответ Сообщение было отмечено nick42 как решение

Решение

bad_luck_ho_ho, создай для одного, а для остальных выбери из списка тот-же.
к чекбоксу обращайся через Sender
C++
1
dynamic_cast<TCheckBox*>(Sender)-> //что там тебе нужно
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
23.07.2015, 10:25
Цитата Сообщение от bad_luck_ho_ho Посмотреть сообщение
создавать для каждого CheckBox'a событие "OnValueChange" не вариант
Тем более, что такого события для CheckBox-а не существует. А если расскажешь откуда оно там взялось (или обработчиком какого события ты на самом деле пользуешься) - то я тебе покажу, как сделать желаемое без необходимости даже назначать всем экземплярам один и тот же обработчик...
0
 Аватар для bad_luck_ho_ho
2 / 2 / 1
Регистрация: 19.07.2015
Сообщений: 37
23.07.2015, 10:36  [ТС]
Ну я использую компонент TsCheckBox из AlphaControls, там этот Event присутствует. На самом деле, это не суть. можно использовать и OnClick....да что угодно.
Как правильно объявить сам обработчик, что бы на него попадать при клике на любой из чекбоксов ??
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
23.07.2015, 10:51
Что именно делается в обработчике, можно посмотреть? Обращение к компонентам формы, или что-то другое?
0
 Аватар для bad_luck_ho_ho
2 / 2 / 1
Регистрация: 19.07.2015
Сообщений: 37
23.07.2015, 10:59  [ТС]
Кажется понял, как это сделать. Делаю обработчик хотя бы для одного чек бокса, а для остальных чекбоксов, во вкладке event, в нужном событии указываю на объявленный обработчик...а дальше с вычисляю кто из чекбоксов облажался =)

В обработчике происходит следующее...в зависимости от того, какой чекбокс был нажат, в serialport отсылается комнада...отличие в один байт =)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,910
Записей в блоге: 12
23.07.2015, 11:04
Лучший ответ Сообщение было отмечено bad_luck_ho_ho как решение

Решение

Я бы перехватил класс TCheckBox, и для него переопределил виртуальный метод Click(), ну, или TsCheckBox, и его виртуальный метод, отвечающий за действие при смене значения. Тогда вообще ничего назначать не надо, для всех чекбоксов, которые на форме, автоматически будет данный функционал.
0
23.07.2015, 11:10

Не по теме:

Цитата Сообщение от _Dimon_ Посмотреть сообщение
bad_luck_ho_ho, создай для одного, а для остальных выбери из списка тот-же.
к чекбоксу обращайся через Sender
Цитата Сообщение от bad_luck_ho_ho Посмотреть сообщение
Кажется понял, как это сделать. Делаю обработчик хотя бы для одного чек бокса, а для остальных чекбоксов, во вкладке event, в нужном событии указываю на объявленный обработчик...а дальше с вычисляю кто из чекбоксов облажался
А не одно и то же ли???

0
 Аватар для bad_luck_ho_ho
2 / 2 / 1
Регистрация: 19.07.2015
Сообщений: 37
23.07.2015, 16:15  [ТС]
Большое спасибо за идею...Очень эстетично.
Пошел разбираться.

Добавлено через 2 минуты
Цитата Сообщение от D1973 Посмотреть сообщение

Не по теме:



А не одно и то же ли???

Да ! Это одно и то же...просто с утра не сразу допер...

Добавлено через 4 часа 55 минут
Большое спасибо, все получилось.

C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::sCheckBox1Click(TObject *Sender)
{
   TsCheckBox* ChB= dynamic_cast<TsCheckBox*>(Sender);
   int NMdle=0, NChnl=0;
   NMdle= (((ChB->Tag)-1)/4)+1;       // получаем номер модуля оносительно Tag ((Tag-1)%4)+1
   NChnl= (((ChB->Tag)-1)%4)+1;   // получаем номер канала оносительно Tag ((Tag-1)%4)+1
   bufwr_len=CMD_CHANNEL_ONOFF(temp, ChB->Checked, NMdle, NChnl);
   if(flComOpen) wrdata_comport();   
}
Сейчас попробую через перехват.

Большое всем спасибо и прощу прощения за глупый вопрос.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2015, 16:15
Помогаю со студенческими работами здесь

Обработчик событий для динамических checkbox'ов
Помогите повесить события checkedchanged на checkbox'ы. Надо чтобы при свойстве checked=true _cbox, менялось свойство Visible=true _tbox'ов...

Общий обработчик события для компонентов одного класса
На форме 100 компонентов TShape. При щелчке на любом из них компонент, по которому щелкаем, окрашивается, предположим, в зеленый цвет. ...

Общий обработчик события OnClick для некоторых CheckBox-ов
Есть у меня значит 33 чекбокса, есть попап-меню. Есть 2 обработчика: N5Click(клик по итему с попап-меню) и chk1Click. procedure...

Общий обработчик событий
Этот код взят из готового примера #include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot; ...

Множество CheckBox на ЛИСТЕ и их общий обработчик
Доброго времени суток, уважаемые форумчане! Столкнулся с такой задачей. Необходимо разместить на листе множество чекбоксов и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных выбран регистр накопления, в. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru