![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| mrVerus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
Доброго времени суток! Подскажите как научить свой созданный обьект откликатся на события7
|
|||
|
||||
| mrVerus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
Если поподробние, создаются несколько объектов одного класса, при перемещении мыши они должны откликатся на это событие. Как это можно реализовать7
|
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 5 Всего: 17 |
Если класс самописный, то необходимо в нем создать события OnMouseMove (посмотри исходник любого компонента, у которого есть такое событие). Если класс стандартный и у него нет такого события, то создавай наследника с таким событием. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| mrVerus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
|
|||
|
||||
| amsoft |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 201 Регистрация: 17.10.2009 Где: KZ, Astana Репутация: 3 Всего: 4 |
может сделать наследника от TControl
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин |
|||
|
||||
| mrVerus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
Мне нужен обьект этого класса, так как мне научить его откликатся на события7
Пожалуйста помогоите |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
| mrVerus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 119 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
Что здесь не верно
Это сообщение отредактировал(а) bems - 1.12.2009, 09:16 |
|||
|
||||
| sCreator |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 20.8.2009 Где: Московская област ь Репутация: 2 Всего: 5 |
Неверно почти все Там ничего почти не видно. ( посмотреть бы саму реализацию, а пока будем делать предположения).
Думаю нестоит переопределять TNotifyEvent , если нужно напиши TMyNotifyEvent . Первоначально твой класс рисует что то на конкретной канве и может перемещать свой рисунок. При этом ни канва ни объект на чьей канве рисуется ему не передается, значит строго задан. И в цепочке обработки событий он не участвует. Сделал Ты его от TControl и прописал владельца ( Owner ) - только владелец если упрощенно отвечает за своевременное уничтожение принадлежащих ему компонентов. А вот назначение свойства TControl.Parent уже покажет на чьей канве он расположен. Далее есть еще BoundsRect определяющее размеры и положение твоего объекта на канве. И Visible показывающее рисуется он или нет. Enabled - показывающее принимает ли он события. Вот на основании этих свойств Parent ( TWinControl ) и будет передавать ( или нет ) ему сообщения. Посмотри в модуле Controls
а также TWinControl.IsControlMouseMsg и TWinControl.ControlAtPos Там механизм и условия передачи от Парента к Контролу расписаны. Ну а дальше немного переделать его рисование с учетом выше названных свойств на канве Парента. Это сообщение отредактировал(а) sCreator - 2.12.2009, 08:52 |
|||
|
||||
| sCreator |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 20.8.2009 Где: Московская област ь Репутация: 2 Всего: 5 |
Порядок дальнейшей доделки, думаю, такой:
- наследуй его от TGraphicControl - реализуй функцию procedure Paint; override; ( перенеси из Draw ) ( там должно быть рисование с учетом положения ( ClientRect) на канве предоставляемой TGraphicControl ) - Draw у тебя будет просто вызывать Repaint - move(mx,my:integer) должно просто изменять BoundsRect и возможно вызывать Repaint - присваиваешь Parent - задаешь размеры ( BoundsRect или по отдельности Left, Top и т.д. ) - делаешь видимым ( Visible := True ) - Enabled вроде бы по умолчанию включено пробуешь ловить события ( можешь прикрепить обработчики к OnMouseDown например или переписать ( override ) методы procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); dynamic; Поправил - в Paint надо использовать ClientRect Вот простейшая реализация:
Использовать
Это сообщение отредактировал(а) sCreator - 1.12.2009, 12:27 |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |