Страница 1 из 1

Как изменить позицию курсора мыши на форме?

СообщениеДобавлено: 27.11.2017 14:44:24
DropSoft
Прошу помощи. Нужно при вращении колесика мыши с нажатым контролом установить курсор мыши в центр картинки MyImage.
Код: Выделить всё
procedure TMain.MyImageMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
  if ssCtrl in Shift then begin
    // здесь надо установить курсор мыши в центр MyImage
    MousePos.X := MyImage.Width div 2;
    MousePos.Y := MyImage.Height div 2;
  end;
end;

Здесь при попытке изменить MousePos ничего не происходит, что в общем, понятно. А как правильно?

Re: Как изменить позицию курсора мыши на форме?

СообщениеДобавлено: 27.11.2017 16:11:44
Лекс Айрин
Проблема в том, что MousePos у тебя определена как константа (без модификатора var), поэтому бесполезно ее использовать. Либо искать другой метод (где он есть), либо использовать внешние по отношению к процедуре координаты.

Насколько я понимаю, колесико не предназначено для движения курсора, а для движения относительно него. Попробуй заюзать нажатие средней (если не ошибаюсь, третьей) кнопки.

Re: Как изменить позицию курсора мыши на форме?

СообщениеДобавлено: 27.11.2017 19:53:27
iskander
Что-нибудь вроде:
Код: Выделить всё
procedure TMain.MyImageMouseWheelDown(Sender: TObject; Shift: TShiftState;
  MousePos: TPoint; var Handled: Boolean);
begin
  if ssCtrl in Shift then
    begin
      Mouse.CursorPos := MyImage.ClientToScreen(Point(MyImage.Width div 2, MyImage.Height div 2));
      Handled := True;
    end;
end;

Re: Как изменить позицию курсора мыши на форме?

СообщениеДобавлено: 27.01.2018 00:59:05
Python
Простите, но чем SetCursorPos не подходит?