Текущий архив: 2002.12.12;
Скачать: CL | DM;
Вниз
Перевод фокуса Найти похожие ветки
← →
Grizli © (2002-10-25 09:08) [0]Совсем запарил.
Долбаный TWinControl, какое он обрабатывает сообщение когда я переношу фокус на другой контрол мышью.
CM_Exit, WM_KillFocus, WM_Activate работают тоько при использовании клавиатуры (TAB, стрелки...).
← →
Игорь Шевченко © (2002-10-25 09:55) [1]CM_Enter, WM_SetFocus для того, куда тыкаешь мышью.
CM_Exit, WM_KillFocus для того, где был фокус до тыкания
← →
Nick N A (2002-10-27 08:28) [2]Wm_MouseLeave
Wm_MouseHover
← →
Alex4444444444 (2002-10-27 11:09) [3]AFAIK, CM_Enter i CM_EXit ne prohodyat, kogda focus uhodit v drugoe prilozhenie. WM_KILLFOCUS prohodit vsegda (esli, konechno, focus dejstvitel"no byl i deystvitel"no ushel!)
← →
Grizli © (2002-10-27 11:14) [4]Извеняюсь за неточный вопрос.
Попробую объяснить подробней:
дело в том что я никак не въеду куда мне вставить функции ShowCaret и HideCaret.
← →
KSergey © (2002-10-27 13:51) [5]> Grizli © (27.10.02 11:14)
Вообще-то, после такого "подробнейшего объяснения" хочется ответить в духе Подгорецкого: "В 17 строку с низу".
В книге С.Холзер "Visual C++. Учебный курс" (прошу прощения у дельфистов за употребление ненормативной лексики) утверждается следующее: "При потере фокуса программа получает сообщение WM_KILLFOCUS, а при получении - WM_SETFOCUS". Соответственно в их обработчики и предлагается вставить эти ф-ции. Обрабатываются эти сообщения в главном окне (сужу по приведенному в книге примеру). Сам не проверял.
PS: блин, ответ получился длинее "подробного" вопроса. Хорошо ли?
← →
Игорь Шевченко © (2002-10-28 09:20) [6]Еще можно обрабатывать сообщение WM_ACTIVATE :-)
← →
Grizli © (2002-10-30 08:07) [7]Все разобрался. Сам был виноват, а ошибка заключалась вот в чем (если кому интересно):
как написал Alex4444444444 "esli, konechno, focus dejstvitel"no byl".
я при LButtonDown отсылал SendMessage(Handle, WM_SETFOCUS, 0, 0 ), ну вроде бы срабатывало но не совсем,
при клике на другом контроле KillFocus`а уже не было.
А решение оказалось проще легкого надо было вместо сообщения спользовать метод SetFocus , и все сразу заработало как надо.
Всем спасибо за помощь осбенно Alex`у за верный совет, и KSergey`у за самый длинный ответ.
← →
Nick N A (2002-10-30 08:21) [8]напиши
TYourControl=class(TWinControl)
private
Procedure OnMouseLeave(Var MSG:TMessage); message Wm_MouseLeave;
и нажми Ctrl+Shift+C
Страницы: 1 вся ветка
Текущий архив: 2002.12.12;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.019 c