Статья
Версия для печати
Обсудить на форуме
Слежение за Мышью.


Описание класса 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.


Автор: Александр
Версия для печати
Обсудить на форуме