Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Курсор [D7, WinXP]


Shnabs ©   (2005-03-01 19:46:00) 

Как выполнить какое-нибудь действие, если курсор мыши наведен на определенный объект, а другое действие, если он (курсор) не наведен на этот объект.


begin...end   (2005-03-01 21:28:00) [1]

> Shnabs   (01.03.05 21:22) [2]

Понятно. А вот теперь скажите честно - следует ли этот Ваш вопрос из первоначального вопроса? По-моему, совершенно не следует. И на первоначальный вопрос я уже дал ответ в [1]. И что мне теперь делать? Вдруг я опять не прочитаю Ваши мысли, и опять отвечу не на тот вопрос?

Создайте потомка компонента и создайте в нём обработчики сообщений CM_MOUSEENTER и CM_MOUSELEAVE. Пример того, как это можно сделать, смотрите в исходниках TCustomLabel.

Боольше не скажу ни слова. Весь выдохся на ответе [1].


P.N.P.   (2005-03-01 21:26:00) [2]

лови сообщение CM_MOUSELEAVE


Shnabs   (2005-03-01 21:22:00) [3]

Дело в том что мне надо сделать, чтобы курсор при выходе из области объекта выполнил коекакое действие, а как это сделать я что-то не доганю.


begin...end   (2005-03-01 21:09:00) [4]

> Shnabs   (01.03.05 19:46)

Очевидно, нужно проверить, входит ли точка с координатами курсора в область, ограниченную компонентом.

Координаты курсора можно получить через API-функцию GetCursorPos или через глобальный объект Mouse: свойство Mouse.CursorPos. А прямоугольник области компонента находится в свойстве TControl.BoundsRect. Проверить принадлежность одного другому можно с помощью функции PtInRect.

Но координаты курсора нужно преобразовывать в систему координат родителя компонента. Например, если на форме с именем MyForm находится кнопка MyButton (и MyForm является родителем этой кнопки), то проверить можно так:

if PtInRect(MyButton.BoundsRect, MyForm.ScreenToClient(Mouse.CursorPos)) then
 // Курсор находится в пределах прямоугольника кнопки

См. также: TWinControl.ControlAtPos.


Наверх

Титульная страница Поиск, карта сайта Написать письмо