| 
| 
 | Вопрос # 1 505/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!У меня к вам такой вопрос: какие функции есть у курсора в делфи? Как определить его текущее положение, как поменять, увеличить/уменьшить скорость движения курсора? И что за тип такой TPoint?
 
|  |   Вопрос задал: 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
 Приложение:Переключить в обычный режим   procedure TForm1.Button1Click(Sender: TObject); var   pt : TPoint; begin    Application.ProcessMessages;    Screen.Cursor := CrHourglass;    GetCursorPos(pt);    SetCursorPos(pt.x + 1, pt.y + 1);    Application.ProcessMessages;    SetCursorPos(pt.x - 1, pt.y - 1); end;  -------------------------------------------------GetCursorPos()    procedure Form1.Button1Click(Sender: TObject); var   foo: TPoint; begin   GetCursorPos(foo)   ShowMessage( '(' + IntToStr(foo.X) + ' ,' + IntToStr( foo.Y ) + ')' ); end;  -------------------------------------------------  procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin  end; ------------------------------------------------------
|  | Ответ отправил: 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
 
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |