Слежение за Мышью. - Языки программирования - Shelek
Описание класса Mouse.

В моей статье вы узнаете, как с помощью Delphi и класса TMouse получить позиция мыши на экране относительно x и y, наличие мыши в компьютере или колеса прокрутки и др.
Для начала объявим класс TMouse отвечающий за состояние мыши.

Свойства и методы класса mouse

Объявление Тип Описание
property Capture: HWND; Pu Дескриптор элемента управления, над которым находится мышь
property CursorPos: TPoint; Pu Содержит координаты указателя мыши
property Draglmmediate: Boolean; Ro При значении True реакция на нажатие выполняется немедленно
property DragThreshold: Integer; Ro Задержка реакции на нажатие
property MousePresent: Boolean; Ro Определяет наличие мыши
type UINT = LongWord; property RegWheelMessage: UINT; Ro Задает сообщение, посылаемое при прокрутке в ScrollMouse
property WheelPresent: Boolean; Ro Определяет наличие ScrollMouse
property WheelScrollLines : Integer; Ro Задает число прокручиваемых линий

В пункте "Public" создаем "mous : TMouse;" без кавычек. Выглядит это так:
Код:
public
{ Public declarations }
mous : TMouse;
end;
Всё объект объявлен.

Далее давайте получим позицию мыши относительно x,y. Позицию мыши можно узнать с помощью свойства CursorPos.
Код:
property CursorPos: TPoint;
Давайте создадим небольшую программу которая будет выводить позицию курсора мыши в метку при нажатие кнопки. Для этого в уже созданную форму добавим кнопку(Button) и метку (Label). В процедуре кнопки напишем такой вот текст:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:='x='+ inttostr(Mous.CursorPos.x)+ ' y='+ inttostr(Mous.CursorPos.x);
end;
При компиляции программы мы видим форму и на ней кнопка и метка. При нажатие на кнопке на метке выводится положение мыши. Если понажимать на кнопку в разных местах, то цифры будут меняться.



С помощью свойства "Capture" можно получить дескриптор объекта над которым находится мышь. Давайте попробуем с помощью этого свойства получить дескриптор нашей формы и послать на неё сообщение о закрытие(WM_QUIT).
В процедуру нашей кнопки изменим до такого вида:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(mouse.Capture, WM_QUIT, 0, 0);
end;
Затем откомпилируем наш проект и при нажатие на кнопку будет закрываться наша программа. Ещё мы рассмотрим свойства MousePresent, WheelPresent и WheelScrollLines.
MousePresent нужна для определения, подключена ли мышь к компьютеру, а WheelPresent имеется ли у мыши колесо прокрутки или проще скрул. Свойство WheelScrollLines задает число прокручиваемых линий.
Для вызова этих свойств нужно будет чуть-чуть изменить программу, добавив метод "Create" и метод "Free". Метод "Create" нужен для создание виртуального компонента, а метод "Free" для удаления виртуального компонента. Посмотрите пример:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
mouse:=Tmouse.Create;
if mouse.MousePresent then MessageDlg('Ok!',mtInformation,[mbOk],0);
if mouse.WheelPresent then MessageDlg('Ok!',mtInformation,[mbOk],0);
if mouse.DragImmediate then MessageDlg('true',mtInformation,[mbOk],0);
Label1.Caption:=inttostr(mouse.WheelScrollLines);
mouse.Free;
end;
У меня появилось два сообщения Ok! и одно true и в метке появилась цифра 3.


Автор: Александр
Information
  • Posted on 31.01.2010 23:53
  • Просмотры: 1735