Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
9 / 9 / 5
Регистрация: 03.07.2012
Сообщений: 60

Имя объекта вызывающего событие

15.06.2013, 00:15. Показов 3496. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как вернуть имя объекта который вызывает событие(Вернуть из события);
Ну например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void TForm4::ImgGen(UnicodeString Path, int i, int x, int y){
if (imgF4[i] == NULL) {
imgF4[i] = new TImage (Form4);
ShowMessage("HELLO IMG CREATE");
}
imgF4[i]->Parent = Form4;
imgF4[i]->Left = x;
imgF4[i]->Top = y;
imgF4[i]->Width = 300;//imgF4[i]->Picture->Width;
imgF4[i]->Height = 300;//imgF4[i]->Picture->Height;
imgF4[i]->Picture->LoadFromFile(Path);
imgF4[i]->Width = 300;//imgF4[i]->Picture->Width;
imgF4[i]->Height = 300;//imgF4[i]->Picture->Height;
imgF4[i]->Transparent = true;
imgF4[i]->Picture->Bitmap->TransparentColor = R_G_B;
imgF4[i]->OnClick = iClick;
imgF4[i]->Name = "imgF4"+i;
}
C++
1
2
3
4
5
void __fastcall TForm4::iClick(TObject *Sender){
 
  ShowMessage(""); // Как здесь вернуть имя вызывающего объекта???????
 
 }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.06.2013, 00:15
Ответы с готовыми решениями:

Динамическое создание объекта, вызывающего функцию
Типичное динамическое создание объектов: TImage *myImage; myImage = new TImage(Form1); Пробую сделать так: TImage *myObject; ...

Как вызвать событие объекта в процедуре?
У меня программа большая, всё не буду описывать, но смысл такой: у меня есть две кнопки Button1, Button2. В методе OnClick второй кнопки...

Получение вызывающего объекта
Здравствуйте! Из класса А я дергаю метод статического класса S. Могу ли я в классе S получить объект A a, который вызывает этот...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.06.2013, 00:29
Привести Sender к типу TComponent*, и прочитать имя:

C++
1
String name = dynamic_cast<TComponent*>(Sender)->Name;
1
9 / 9 / 5
Регистрация: 03.07.2012
Сообщений: 60
15.06.2013, 00:53  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Привести Sender к типу TComponent*, и прочитать имя:

C++
1
String name = dynamic_cast<TComponent*>(Sender)->Name;
Большое спасибо!

А кроме имя, мой объект может что то еще передать? Ну например если я хочу передать какой то текст?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.06.2013, 01:05
У любого компонента есть свойство Tag, которое можно использовать в качестве указателя. На что - решать тебе. Можно при необходимости вообще любой сложности класс, хранящий какую угодно информацию, "связать" с компонентом. Главное - не забыть его вовремя удалить, потому что автоматически удалится только сам компонент при удалении своего Owner-а...
0
9 / 9 / 5
Регистрация: 03.07.2012
Сообщений: 60
15.06.2013, 02:04  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
У любого компонента есть свойство Tag, которое можно использовать в качестве указателя. На что - решать тебе. Можно при необходимости вообще любой сложности класс, хранящий какую угодно информацию, "связать" с компонентом. Главное - не забыть его вовремя удалить, потому что автоматически удалится только сам компонент при удалении своего Owner-а...
А каким способом можно класс с компонентом связать? Через класс создать объект и привести его к Ткомпонент?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
15.06.2013, 03:23
C++
1
2
TMyObj *myObj = new TMyObj(); // TMyObj может хранить всё что угодно, правда?
imgF4[i]->Tag = (int)myObj; // теперь с компонентом связан объект
2
9 / 9 / 5
Регистрация: 03.07.2012
Сообщений: 60
15.06.2013, 19:04  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
C++
1
2
TMyObj *myObj = new TMyObj(); // TMyObj может хранить всё что угодно, правда?
imgF4[i]->Tag = (int)myObj; // теперь с компонентом связан объект
Аааа, ясно, спасибо!

Добавлено через 10 часов 13 минут
Цитата Сообщение от UI Посмотреть сообщение
C++
1
2
TMyObj *myObj = new TMyObj(); // TMyObj может хранить всё что угодно, правда?
imgF4[i]->Tag = (int)myObj; // теперь с компонентом связан объект
А можете дать сылочку на литературу? Хотелось бы повысить свои знания в данном вопросе!

Добавлено через 13 минут
Ну или хотя бы направление в каком русле копать?

Добавлено через 5 часов 4 минуты
А ну допустим я связал объект с тегом! Но как его использовать дальше если он конвертируется в int!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2013, 19:04
Помогаю со студенческими работами здесь

Как узнать имя объекта, на котором произошло последнее событие?
к примеру Button1Click произошел когда нажали на кнопочку, а в лейбл вывести имя объекта - Button1 подскажите как эт узнать? upd. ...

Передача вызывающего событие элемента в сам метод события
Есть сложность: в форме при инициализации создается динамический массив объектов PictureBox, при этом каждому из них задается уникальный...

Как в обработчике события получить из sender имя объекта, вызвавшего событие, а не тип?
Добрый день! Помогите, пожалуйста, решить такой вопрос: Есть 2 объекта класса: private Sphere sphA, sphB в классе создается событие...

Класс: Как обработать событие последнего объекта в форме, не создавая в классе объекта промежуточное событие?
Итак! Проблема состоит в следующем! Имеется класс в который входит объект второго класса. В последнем классе имеется событие. Как правильно...

Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта
как её исправить? уже давно вожусь не могу разобраться


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru