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

Ваш аккаунт

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

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

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

MouseEnter vs MouseLeave

44K
07 декабря 2009 года
NetLister
12 / / 27.05.2009
Что-то голова уже совсем не соображает... Хоть убейте, не могу понять, что за юмор такой...

C++Builder 2009.

Для примера создаю "чистый" проект. На форме две панели (TPanel). Соединены между собой, так сказать, в стык, без зазора. Всяческие рамки у панелей (бордеры и бевелы) отключены. Для наглядности на форме также имеется TMemo, в котором отображается последовательность возникновения событий MouseEnter и MouseLeave этих двух панелей. Все вроде отлично отрабатывается, до тех пор, пока не проведешь курсором в том самом месте, где панели соединены между собой. При этом происходит сначала MouseEnter панели, на которую мы навели курсор, а затем MouseLeave панели, которую покинули. Я в шоке! Как так? Ведь даже по логике - мы сначала покидаем панель А, затем только происходит "Enter" на панель B. В примере же все в точности до наоборот.

Дальше еще смешнее. Делаю все в точности также, но вместо панелей два TImage... И что вы думаете? С ними все ок. При переводе курсора с имейджа A на имейдж B сначала происходит AMouseLeave и только затем BMouseEnter...

Все перепроверил несколько раз, с моей стороны ошибка исключена.
Я что-то не понимаю? Поясните, кто в курсе... Или же это все таки баг IDE? :(
288
07 декабря 2009 года
nikitozz
1.2K / / 09.03.2007
Выложите ваш проект. У меня в RAD2009 все работает нормально.
44K
07 декабря 2009 года
NetLister
12 / / 27.05.2009
Вот исходник этого примера.
288
08 декабря 2009 года
nikitozz
1.2K / / 09.03.2007
Проверил на своем компьютере. Переводил курсор с одной панели на другую через их пересекающиеся границы. Вот результат.
44K
08 декабря 2009 года
NetLister
12 / / 27.05.2009
nikitozz, спасибо за тест, но у меня как раз все наоборот. Может дело в Windows (у меня семерка) или версии апдейта студии (ставил только первый апдейт). Не подскажите, что у вас за винда и версия айпдейта студии? Спасибо.

P.S. Проверил только что скомпилированный пример на виртуальной машине с Windows XP - та же беда... Значит винда скорее всего отпадает. Дело в самом билдере.
44K
08 декабря 2009 года
NetLister
12 / / 27.05.2009
Вопрос снят. Проблема действительно была в самом билдере. Точнее в кривизне одного из установленных апдейтов. Даже если ставить студию без установки каких-либо апдейтов, проблема испаряется.

Такое вот недоразумение, попившее у меня крови, прежде чем я понял, что проблема не во мне... :)
44K
10 декабря 2009 года
NetLister
12 / / 27.05.2009
Забавно... Поставил сегодня на виртуальной машине с XP билдер 2010 из RAD Studio 2010, сборка 3513. Без апдейтов... Так вот на нем этот же пример выдает ту же самую ерунду. Т.е. при переводе курсора с панели A на панель B происходит сначала BMouseEnter и только затем AMouseLeave. Хрень какая-то... Может это теперь так и должно быть..?
:mad:
288
11 декабря 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: NetLister
Может это теперь так и должно быть..?
:mad:



По идее нет. Попробуйте посмотреть исходники в студии. Или попробуйте залогировать нужные windows сообщения, приходящие в программу.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог