Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как ограничить движения мышки определенной областью?

01.01.2007

Вариант 1:

Source: https://forum.sources.ru

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

ClipCursor(&BoundsRect);

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

ClipCursor(NULL);

Если нажать кнопку мыши на форме и удерживать её, то курсор мышки не сможет покинуть пределы формы.


Вариант 2:

Source: DelphiWorld 6.0 https://delphiworld.narod.ru/

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

procedure TForm1.Button1Click(Sender: TObject);
var
  r: TRect;
  pr: PRect;
begin
  r.Left := 100;
  r.Top := 100;
  r.Right := Screen.Width - 100;
  r.Bottom := Screen.Height - 100;
  pr := @r;
  ClipCursor(pr);
end;

Чтобы восстановить:

ClipCursor(NULL);
Previous page:
Подсветка компонента во время перемещения над ним мыши
Top:
DRKB
Next page:
Ловить события мышки вне вашего приложения