Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка щелчка мыши другим компонентом 
:(
    Опции темы
ksili
Дата 1.2.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



У меня поверх компонента TImage расположено несколько компонентов TShape, которые создаются динамически. Необходимо, чтобы при щелчке мыши на любом из TShape вызывался обработчик OnMouseUp компонента TImage и соответственно, чтоб переданные в него X и Y были координатами в TImage, а не в TShape.

Я пробовал определить всем TShape обработчик OnMouseUp тот же, что и у TImage
Код

Base[i].rect = new TShape(TabSheet2);
Base[i].rect->Parent = TabSheet2;
Base[i].rect->OnMouseUp = Image1MouseUp;

Но при этом X и Y - координаты внутри TShape, и по ним определить какой TShape щёлкнули невозможно.

Затем пробовал определить всем TShape одинаковый обработчик OnMouseUp
Код

Base[i].rect = new TShape(TabSheet2);
Base[i].rect->Parent = TabSheet2;
Base[i].rect->OnMouseUp = MyClick;

У функции MyClick аргументы как у стандартного обработчика
Код

void __fastcall MyClick(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);

но при этом компилятор выдавал ошибку
Cannot convert 'void (__fastcall*)(TObject*, TMouseButton, TShiftState, int, int)' to 'void (__fastcall * (__closure)(TObject*, TMouseButton, TShiftState, int, int))(TObject*, TMouseButton, TShiftState, int, int)'

Как всё-таки назначить свою функцию в качестве обработчика, или обрабатывать нажатие обработчиком компонента TImage?

Вообще всё это надо чтобы узнать по какому TShape кликнули

Это сообщение отредактировал(а) ksili - 1.2.2006, 11:04


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
_hunter
Дата 1.2.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



Цитата(ksili @ 1.2.2006, 09:40 Найти цитируемый пост)

Но при этом X и Y - координаты внутри TShape, и по ним определить какой TShape щёлкнули невозможно.

почему невозможно? у тебя есть координаты верхнего левого угла фигуры. прибавь к ним эти x, y и получиш координаты в картинке...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Artemon
Дата 1.2.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Вставь этот кусок в обработчик отпускания мыши Image:

Код

Image1MouseUp
               (
               Sender,
               Button,
               Shift,
               ((TShape*)Sender)->Left + X,
               ((TShape*)Sender)->Top + Y
               );



--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
ksili
Дата 1.2.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Artemon, cпасибо.
Я чё-то не догадывался привести Sender к типу TShape, поэтому координаты верхнего левого угла получить не мог. Теперь мне X и Y вообще не нужны стали


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.