Форум: "Начинающим";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];
ВнизCM_MOUSEENTER Найти похожие ветки
← →
Litt (2011-09-23 18:42) [0]Здравствуйте.
У меня возникла проблема в следующем:
Навожу на котрол курсор, зажимаю ЛКМ. Перевожу на другой и отпускаю. При этом второй контрол не получает CM_MOUSEENTER и соответственно CM_MOUSELEAVE.
Как ее решить?
Пытался в WMLButtonUp добавить эту строку:Parent.Perform(CM_MOUSEENTER, 0, 0);
после чего стало обрабатываться CM_MOUSELEAVE, но ENTER так и не было.
← →
Rouse_ © (2011-09-23 18:48) [1]
Второй контрол
, это тот на который ты перевел мыш или тот на котором отпустил кнопку?
← →
Dimka Maslov © (2011-09-23 19:51) [2]При нажатии на кнопку над контролом он получает ВСЕ события от мыши до тех пор, пока кнопка не будет отпущена. Так работает выньда.
← →
Puw (2011-09-23 20:25) [3]Rouse_, зажал на первом, отпустил на втором.
Я так понял, что все эти CM_MOUSEENTER контролирует окно, но не понял в каких случаях оно отправляется.
Наверное, нужна функция, которая получает контрол из под мышки во время ее движения, но где она?
← →
Dimka Maslov © (2011-09-23 20:37) [4]СМ_MOUSEENTER отправляется контролу когда на него находит курсор, но не через очередь сообщений, а через метод Perform, ибо это внутренее сообщение VCL.
А функция, которая получает контрол по координатам называется TWinControl.ControlAtPos
← →
Puw (2011-09-23 21:56) [5]Упростил
TWinControl.ControlAtPos
до поиска только по своему типу, отсылаю емуCM_MOUSEENTER
и все работает.
Всем спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.01.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c