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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Ответить
DropSoft
новенький
Сообщения: 33
Зарегистрирован: 31.03.2013 13:47:40

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

Сообщение 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 ничего не происходит, что в общем, понятно. А как правильно?
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

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

Насколько я понимаю, колесико не предназначено для движения курсора, а для движения относительно него. Попробуй заюзать нажатие средней (если не ошибаюсь, третьей) кнопки.
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение 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;
Python
новенький
Сообщения: 20
Зарегистрирован: 23.01.2018 20:50:17

Сообщение Python »

Простите, но чем SetCursorPos не подходит?
Ответить