|
Вопрос # 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
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|