![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Регистрация: 04.04.2008
Сообщений: 8
|
![]()
Надо чтоб указатель двигался с привязкой к точкам (допустим ч/з каждые 50точек), как по координатной сетке (например как в AutoCAD) во все 4 направления.
P.S. Немогу реализовать идею. HELP!!! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . указатель мыши должен двигаться только по отмеченным точкам. ![]() |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Попробуй вот это:
Код:
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 04.04.2008
Сообщений: 8
|
![]()
Почти то, но надо чтобы координаты перескакивали вместе с курсором (Пример: (0,0), (0,50),(50,50), и т.д) т.е если курсор находится на точке то он должен точно отображать ее координаты(X,Y), а при движении курсора допустим в право вниз показать сразу (X+50,Y+50) а не так как в примере. Хотя и на этом спасибо.
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Дискретность легко заменить. В коде меняем 16 на 50 и все.
Если нужны пояснения, спрашивай. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 04.04.2008
Сообщений: 8
|
![]()
Нашел другой вариант более подходящий но немогу избавится от передергивания курсора, немного раздражает, помогите если это возможно.
Заранее спасибо! procedure MOUSEMOVE(var Message: TWMMouseMove); message WM_MOUSEMOVE; ... var Change: Boolean = False; ... procedure TForm1.MOUSEMOVE(var Message: TWMMouseMove); const Step = 20; var NewPos: TPoint; Tmp: Integer; begin Change:=not Change; Label1.Caption:=IntToStr(Message.XP os); Label2.Caption:=IntToStr(Message.YP os); Tmp:=(Message.XPos div Step)*Step; if Message.XPos mod Step > Step div 2 then Tmp:=Tmp + Step; NewPos.X:=Tmp; Tmp:=(Message.YPos div Step)*Step; if Message.YPos mod Step > Step div 2 then Tmp:=Tmp + Step; NewPos.Y:=Tmp; NewPos:=ClientToScreen(NewPos); if not Change then SetCursorPos(NewPos.X, NewPos.Y); end; |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
ИМХО он все равно будет дергаться. Дело в том, что когда мы получаем событие, курсор уже передвинут, а мы его переставляем.
Есть еще вариант. Когда курсор заходит на форму, отключаем его - ShowCursor(false) и рисуем сами, там, где нам нужно. Когда уходит с формы - включаем. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
передача указателя в функцию | arturka | Помощь студентам | 3 | 06.07.2008 00:25 |
Координаты указателя мыши | Артэс | Win Api | 9 | 15.06.2008 16:20 |
Перемещение указателя на следующую запись | Avalonix | БД в Delphi | 6 | 31.05.2008 11:13 |
Изменение вида Image при наведении указателя | Сергей А | Помощь студентам | 3 | 05.08.2007 15:26 |
Положение указателя мыши | Viteef | Общие вопросы Delphi | 4 | 26.06.2007 15:59 |