Все потомки TComponent могут посылать сообщения CM_MOUSEENTER и CM_MOUSELEAVE во время вхождения и покидания курсора мыши области компонента. Если вам необходимо, чтобы ваши компоненты обладали реакцией на эти события, необходио написать для них соответствующие обработчики.

 

В этом примере курсор мыши сам встает на кнопку и нажимает на нее.

 

Для этого можно воспользоваться API функцией ClipCursor(). Например, можно вставить следующий код в обработчик события формы OnMouseDown:

ClipCursor(&BoundsRect);

а следующий код в обработчик события формы OnMouseUp:

ClipCursor(NULL);

Нам потребуется универсальная функция, которую можно будет применять для различных визуальных контролов.

 Вот пример вызова нашей функции:

 

 GetCursorPos()

 Автор Spawn

Обрабатывай событие OnMouseMove. Координаты курсора можно получить следующим путем:

 

Code:

var hintWnd: THintWindow;

 

procedure TForm1.ActivateHintNOW( x,y: Integer);

var rect: TRect;

begin

HintTxt := 'qq';

if hintTxt <> '' then

begin

   rect := hintWnd.CalcHintRect( Screen.Width, hinttxt, nil);

   rect.Left := rect.Left + x;

   rect.Right := rect.Right + x;

   rect.Top := rect.Top + y;

   rect.Bottom := rect.Bottom + y;

   hintWnd.ActivateHint( rect, hinttxt);

end;

end;

 

 

Замечание: Не забудьте каждый раз создавать hintWnd:

    hintwnd:= THintWindow.create(self);

 

а затем освобождать его

      hintwnd.releasehandle;

Можно через события OnMouseEnter/OnMouseLeave:

Затем считывать параметр FMouseInPos.

 

Code:

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

Application.ProcessMessages;

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

 

Существует такой тип, как TMouse, который передаёт координаты мышки в любое время, так что помести в обработчик события нажатия мыши на форме его вызов. Подробнее смотри в хелпе.

 Лучше говорить, что существует объект класса TMouse, на него ссылается глобальная переменная Mouse из модуля Controls... А то человек кинется создавать свой экземпляр...

Следующий пример демонстрирует использование API функции mouse_event() для эмуляции событий мышки. Когда Button2 нажата, то мышь перемещается на Button1 и щёлкает по ней. Координаты мыши даны в "Mickeys", где 65535 соответствует ширине экрана.

Code:

Begin

//---------

SwapMouseButton(true); // Поменять обратно - SwapMouseButton(false);

//---------

end;