Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 06.06.2019
Сообщений: 8

Как сделать одно событие для нескольких одинаковых объектов с разными индексами

06.06.2019, 15:40. Показов 2103. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня несколько элементов shape с именами Blue1-10, вопрос в том, как создать событие, onMouseDown допустим, но только не для каждого отдельно взятого Blue, а для всех элементов, имя которых начинается на Blue.
Т.е. например не так:

void __fastcall TForm1::Blue1MouseDown
void __fastcall TForm1::Blue2MouseDown
...
void __fastcall TForm1::Blue10MouseDown

А так:

void __fastcall TForm1::BlueMouseDown
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2019, 15:40
Ответы с готовыми решениями:

Одно событие для многих объектов. Как отловить?
День добрый! На форме 30 panel, в каждой есть TableLayoutPanel в которой уже есть 40 Label. В общей сложности получается рабочих лейблов...

Как для нескольких компонентов выполнять одно событие
Вообще суть такая: На форме есть 5 кнопок. Я на одну кнопку реализовал код, чтобы когда наводишь курсор на Button он сам в течении 3 сек....

Одно событие для многих объектов
Здравствуйте. C# приложение WPF Есть 16 меток, при нажати на определённую метку происходит событие отображающее нажатие этой метки. ...

5
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
06.06.2019, 16:17
Лучший ответ Сообщение было отмечено FLECKTOR как решение

Решение

Используйте Sender из параметров вызова__
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Blue1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
     TShape* sh = dynamic_cast<TShape*>(Sender);
     if( sh->Name.SubString(1,4)!="Blue") return;
   /*
     sh->Brush->Color = clBlack;  - your actions
   */
}
Просто назначьте остальным шейпам этот обработчик; а он работает с объектом sh, т.е. тем, от которого пришел запрос на обработку.
1
0 / 0 / 0
Регистрация: 06.06.2019
Сообщений: 8
06.06.2019, 21:25  [ТС]
Спасибо! получилось
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
07.06.2019, 10:52
А зачем такая проверка с именем вызывающего объекта, если можно назначить этот обработчик только нужным компонентам? )
0
0 / 0 / 0
Регистрация: 06.06.2019
Сообщений: 8
09.06.2019, 13:27  [ТС]
Я в принципе так и сделал, просто нужным объектам добавил это событие, но если бы не было этих строк
C++
1
2
     TShape* sh = dynamic_cast<TShape*>(Sender);
     if( sh->Name.SubString(1,4)!="Blue") return;
то при нажатие на Blue1-10 действия происходили бы только с Blue1, а не с теми на которые я нажал.
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
11.06.2019, 11:45
FLECKTOR, только без первой, в которой указатель на вызывающий объект Sender приводится к указателю на TShape. А вот проверка, содержит ли имя вызвавшего компонента подстроку "Blue" не нужна, если ты и так назначаешь этот обработчик только нужным компонентам.
Вот если бы это был какой-то универсальный обработчик, который бы делал разные действия для компонентов с разным именем - тогда это нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2019, 11:45
Помогаю со студенческими работами здесь

Одно событие для нескольких ComboBox
У меня маленькая проблемка. На форме, сделанной в Excel, у меня динамически создаются ComboBox и как можно сделать чтобы на событие...

Как сделать одно событие для каждого элемента массива?
Здравствуйте. Есть массив с контролами. А как сделать чтобы при наведении мыши на контрол, который в массиве с ним что-то происходило? Для...

Одно событие для нескольких элементов управления
добрый день. имеется форма с 19 textBox. необходимо реализовать навигацию между ними с помощью курсорных клавиш (вниз - следующий, вверх -...

Создать одно событие для нескольких кнопок
тема такая: пишу игру крестики-нолики. для всех кнопок событие одно и то же. можно как-то вызвать его в цикле или что-то типа того?

Как сделать одно контекстное меню для нескольких richTextBox?
На форме четыре richTextBox, для каждого из них необходимо контекстное меню со стандартными функциями - копировать, вырезать, вставить,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru