Як вимкнути - перехоплення - подій контролами

Напевно, поставлю дурне питання, хотів навіть у розділ для новачків написати, але це все ж таки ближче до винапі :)
Є форма, у ній контроли конкретно - TImage. Створюю їх димамічно, але не суть.
для форми задана реакція на OnMouseMove, MouseDown/Up ну і ще купу подій
і що виходить, коли миша знаходиться над дочірнім контролем - ес-но, подія OnMouseMove форми не виникає, а відпрацьовує однойменну подію контролю
а мені потрібно обробити подію в обробнику форми!
Поки зробив наступним чином, для всіх контролів призначаю події, що делегують відпрацювання у подію форми, на кшталт того:
але якось некрасиво це. Може, я чогось упустив, можливо, можна відключити перехоплення подій дочірніми контролами?


так це. та ж байда, навіть спробував – як тільки заїжджаєш на батьківський контрол, так усе. месажі йдуть йому, тобто. в порожнечу.
мабуть, тут питання не стільки делфі, скільки винапі, причому, наскільки розумію, питання щодо базових понять диспетчування подій венд

тут дві речі: 1) якщо миша над дочірнім контролем - спадкоємцем TGraphicControl (як наприклад TImage про який ти говорив) то форма отримує віндове повідомлення, але генерує з нього подію для дочірнього контролю. Тут застосуємо мою першу пораду
2) якщо миша над дочірнім контролем - спадкоємцем TWinControl (як усі контроли, які можуть бути батьківськими для інших) то вінда шле повідомлення відразу у вікно цього контролю. І тут мабуть можна використовувати хуки
Додано пізніше:Щас перевірив, обробник повідомлення повинен бути саме в перекритій процедурі WndProc а message-метод викликається занадто пізно.напевно тому і була "та сама байда"

Дякую! трохи зрозуміліше стало. Ні, хуками я користуватися не буду. Напишу процедурку, переберу всі контролі на формі і переб'ю їм OnMouseMove і так, щоб у виклик відправляли назад у відповідні обробники форми :)
походу справи, це виявляється найкрасивішим рішенням )) і прив'язки до винапи, все через дельфовые обгортки, тобто. глючити начебто не повинно за практично будь-яких перспектив

Ні, це просто жах якийсь! :)
Спочатку все починалося добре. Мене цікавлять тільки події миші, точніше три ці події, які покриваю, на мою думку, всі "мишачі" завдання:
З якоїсь невідомої причини, всі події у TControl-ів засунуті в protected секцію! припустимо, що це тому, що набори подій у різних спадкоємцем різний. Тому просто так пробігтися Components, встановлюючи їм відповідні події, не вийшло, - доводиться вручну перебирати всі можливі типи :(
все працює на ура, але це ж повний триндець!
ось і закінчилася ідея про "красу". на дозвіллі почитаю про хуки.


Для встановлення атрибутів можна використовувати такий спосіб
Так як SizeOf (TMouseEvent) = 8 (64bit) може SetInt64Prop підійде. Якось типу
PS: B і результати на студію. Цікаво ж, прокотить SetInt64Prop чи ні.


Прошу вибачення! Завалило роботою. Ось, як розгрібся, повертаюся до мого прожекту.
Дякую за відповіді! , але.. папунктам
Invalid class typecast.
так що до встановлення атрибутів не дійшов: (
І ось ще. Якщо у тебе є TImage, який ти використовуєш просто для краси, у нього можна Enabled := True, тоді всі події "залишаться на формі".
від млинець працює!
Так, у мене TImage для вигляду, просто щоб було куди картинку завантажити. А яке може бути підводне каміння, якщо я його занаблю в офф?
Взагалі мета така. Пишу гру для дитини, всі об'єкти на екрані - різні картки-картинки, які, власне, за сценарієм можна тягати з одного місця в інше, деякі не тягаються, а грають роль кнопок. загалом, обробляється лише три події миші.
Карток багато. Вирішив максимально відвернутися від VCL, сам організую менеджер картинок, визначаю, над ким миша. Однак, щоб не паритися з перемальовуванням картинки, для кожної картки вирішив використати свій TImage. Креат їх списком для кожної "кімнати" або як це назвати, зібрався рухати, потім знищити.
Може, під час справи з'являться якісь дотепніші ідеї реалізації? Дуже допомогло б!