Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

DNK
I. DNK
Баллы: 5

Подробнее »



Вопрос # 1 505

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
У меня к вам такой вопрос: какие функции есть у курсора в делфи? Как определить его текущее положение, как поменять, увеличить/уменьшить скорость движения курсора? И что за тип такой TPoint?

Приложение:
  1.  


IlluminatI Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: IlluminatI (статус: 2-ой класс)
Вопрос отправлен: 16 апреля 2008, 20:36
Состояние вопроса: открыт, ответов: 4.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, IlluminatI!
TPoint - это просто обычный record с двумя полями x и y. По этому, код должен выглядеть где то так

var p:TPoint;
begin
if not GetCursorPos(p) then begin
  showmessage('произошло что то ужасное - координаты не известны');
  exit;
end;
ShowMessage(format('текущие координаты курсора x=%d, y=%d',[p.x, p.y]));
Почему функция имеет такой вызов? С этим вопросом надо идти к создателям Windows.

По поводу скорости. Это надо в реестре искать.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 16 апреля 2008, 21:36

Ответ #2. Отвечает эксперт: Паровоз

Здравствуйте, IlluminatI!
Установить нужную скорость курсора можно следующим образом:
var v:integer;//скорость
begin
v:=15;//1<=v<=20
SystemParametersInfo(SPI_SETMOUSESPEED,0,Pointer(v),SPIF_SENDCHANGE);
end;

Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 16 апреля 2008, 22:26

Ответ #3. Отвечает эксперт: Drozdov D.V.

Здравствуйте, IlluminatI!
Вот вам несколько готовых заготовок для работы с курсором.
Собраных в качестве примера.
Взято с Vingrad.ru http://forum.vingrad.ru
Взято с Исходников.ru http://www.sources.ru

Приложение:
  1.  
  2.  
  3. procedure TForm1.Button1Click(Sender: TObject);
  4. var
  5. pt : TPoint;
  6. begin
  7. Application.ProcessMessages;
  8. Screen.Cursor := CrHourglass;
  9. GetCursorPos(pt);
  10. SetCursorPos(pt.x + 1, pt.y + 1);
  11. Application.ProcessMessages;
  12. SetCursorPos(pt.x - 1, pt.y - 1);
  13. end;
  14.  
  15. -------------------------------------------------
  16. GetCursorPos()
  17.  
  18.  
  19.  
  20. procedure Form1.Button1Click(Sender: TObject);
  21. var
  22. foo: TPoint;
  23. begin
  24. GetCursorPos(foo)
  25. ShowMessage( '(' + IntToStr(foo.X) + ' ,' + IntToStr( foo.Y ) + ')' );
  26. end;
  27.  
  28. -------------------------------------------------
  29.  
  30.  
  31. procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  32. begin
  33.  
  34. end;
  35. ------------------------------------------------------


Ответ отправил: Drozdov D.V. (статус: 4-ый класс)
Время отправки: 16 апреля 2008, 22:44

Ответ #4. Отвечает эксперт: Feniks

Здравствуйте, IlluminatI!
В дополнении ко всему выше сказанному...
TPoint - это запись для удобного хранения координат X и Y:

Type
TPoint = packed record
  X: Longint;
  Y: Longint;
end;
Все функции по работе с курсорами есть в Хедпе Делфи.
Можете еще почитать вопрос #1501. Там приведен пример по загрузке анимированного курсора из файла.
P.S. Желаю удачи.

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 17 апреля 2008, 12:10


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 21 августа 2017, 15:00
Выполнено за 0.25 сек.
Рейтинг@Mail.ru