Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.183.137] |
|
Сообщ.
#1
,
|
|
|
Обрабатываю в своем компоненте уход мышки из области компонента, причем вместо собития CM_MOUSELEAVE использую
procedure TESoldTreeView.WndProc(var Message: TMessage); Var P : TPoint; begin Case Message.Msg Of WM_MOUSEMOVE, WM_NCMOUSEMOVE : begin inherited; if not FMouseInControl then if Enabled then begin FMouseInControl := True; SetCapture(Handle); if Assigned(FOnMouseEnter) then FOnMouseEnter(Self); end; P:= Point(Message.LParamLo, Message.LParamHi); if not PtInRect( ClientRect, P ) then if FMouseInControl and Enabled and (not Dragging) then begin FMouseInControl := False; if Assigned(FOnMouseLeave) then FOnMouseLeave(Self); ReleaseCapture; end; end; else Inherited; end; Код работает нормально до тех пор, пока я не кликну по компонету. После этого обработка ухода мышки прекрашается. Событий MOUSE_DOWN и тому подобных у меня нет. Может кто-нибудь встречался с пододоной проблемой и может подсказать что делать, что бы событие обрабатывалось в любом случае. |
Сообщ.
#2
,
|
|
|
а все очень просто - ты посмотри после нажатия кто у тебя является CaptureControl (через GetCaptureControl() )...
|
Сообщ.
#3
,
|
|
|
Rouse_, по твоему совету проверил, как меняется CaptureControl при нанажити мышки: оказалось, что CaptureControl обращется в nil после отрабоки события WM_LBUTTONDOWN. Проблема решилась установкой SetCapture(Handle) в WM_LBUTTONUP. Спасибо!
|
Сообщ.
#4
,
|
|
|
Всегда пожалуйста.
|
Сообщ.
#5
,
|
|
|
Цитата IGL @ причем вместо собития CM_MOUSELEAVE использую а я для забивания гвоздей микроскоп использую. Зачем использовать столь громоздкий код, если есть специальное сообщений?? |