Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

КАК ПРИ НАВЕДЕНИИ МЫШКОЙ НА TImage изменить его рисунок

2.4K
14 сентября 2003 года
slego
25 / / 19.08.2003
Можно ли как-нибудь реализовать изменение картинки при наведении
курсора на TImage, а затем при его снятии, чтобы картинка изменилась на первоначальную?

Спасибо.
310
14 сентября 2003 года
fellow
853 / / 17.03.2003
У TImage есть событие OnMouseMove, в нём всё и реализуйте. Как только первый раз событие произошло, так установите флаг и измените картинку. Как только OnMouseMove сработает у того, на чём лежит TImage (на форме, фрейме или панели), то при наличии установленного флага измените картинку на первоначальную и сбросьте флаг.
2.4K
14 сентября 2003 года
slego
25 / / 19.08.2003
Цитата:
Originally posted by fellow
У TImage есть событие OnMouseMove, в нём всё и реализуйте. Как только первый раз событие произошло, так установите флаг и измените картинку. Как только OnMouseMove сработает у того, на чём лежит TImage (на форме, фрейме или панели), то при наличии установленного флага измените картинку на первоначальную и сбросьте флаг.



Огромное спасибо за все Ваши советы (за TeeChart тоже :) ).
В чем общем-то задача: мне нужно реализовать набор картинок-кнопок (что-то типа ToolBar'a) и чтобы эти кнопки были круглые и имели 3 состояния: обычное, наведение курсора и нажатие на кнопке.
Пропробовал воспользоваться Вашим алгоритмом, но сразу возникают проблемы. TImage на форме окружен разными компонентами. Что делать допустим в случае, если после наведения на картинку, курсор сразу же попадает на такой компонент как, допустим, TMainMenu, у которого нет свойства OnMouseMove?

310
15 сентября 2003 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by slego
В чем общем-то задача: мне нужно реализовать набор картинок-кнопок (что-то типа ToolBar'a) и чтобы эти кнопки были круглые и имели 3 состояния: обычное, наведение курсора и нажатие на кнопке.


Пожалуй, тогда лучше создать свои собственные кнопки. Наверное, есть компоненты для реализации лично рисуемых (owner draw) кнопок.

415
17 сентября 2003 года
SLA
274 / / 08.08.2003
Цитата:
Originally posted by slego
TImage на форме окружен разными компонентами. Что делать допустим в случае, если после наведения на картинку, курсор сразу же попадает на такой компонент как, допустим, TMainMenu, у которого нет свойства OnMouseMove?



Я сталкивался с какой проблемой. Пробовал ставить всем компонентам в обработчик события OnMouseMove такую функцию как пишет fellow. Но беда в том, что мышка движется рывками (есть какая-то частота скачков в секунду), и при резком рывке мышью с кнопки на компонент не имеющий OnMouseMove, кнопка оставалась "поднятой".

Правильнее всего было бы научить программу реагировать на событие "перемещение мыши по экрану" (это делается на WinAPI), и, зная координаты окна и координаты кнопок на нем, проверять, не находится ли указатель мышки над какой-то из кнопок. И принимать соответствующие меры.

Кстати, функция реагирующая на перемещение мыши (будь она в OnMouseMove или как я написал выше) должна быть хорошо оптимизирована, т.к. она будет вызываться много раз в секунду.

2.4K
17 сентября 2003 года
slego
25 / / 19.08.2003
В общем Я нашел компонент, в котором реализована такая кнопка - 3 состояния. Вот адресок: http://escapeyl.narod.ru/GButton.zip

Попробовал, работает прекрасно!
860
17 сентября 2003 года
Abell2000
138 / / 15.01.2003
Для таких кнопок надо ставить capture и отслеживать mousemove только для кнопки. Думаю в том компоненте так и сделано. Щас погляжу...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог