Щелчок мыши и его обработка

Windows приложение сейчас трудно представить без использования компьютерной мыши. Многие элементы управления доступны посредством использования мыши. Клик (щелчок) мыши в основном меню почти любой программы позволит быстро выполнить необходимое нам действие.

В среде Delphi основной обработчик клика (щелчка) мыши на компоненте есть и Вы прекрасно его знаете это событие onClick. Это событие в основном используют в объектах типа переключатель или кнопка. Есть еще одно событие OnDblClick (двойной клик на объекте). Эти события не дают нам информацию о точных координатах указателя мыши.

Данное положение вещей не всегда удовлетворяет запросам разработчика. И поэтому в Delphi присутствуют  еще два события - это OnMouseUp (происходит при отпускании кнопки мыши) и OnMouseDown (происходит при нажатии кнопки мыши).Эти события несут подробную информацию о параметрах клика: точные координаты указателя в пределах клиентской области объекта на котором был выполнен клик, тип клика (двойной или одинарный), состояние системных клавиш SHIFT, ALT и CTRL, какая кнопка мыши была нажата или отпущена.

Заголовки у данных событий различаются, но в остальном все параметры идентичны.

procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

TMouseButton является перечисляемым типом и содержит три значения: mbRight, mbMiddle, mbLeft, что будет означать была ли использована правая средняя или левая кнопка мыши.

Давайте расположим на форме компонент Панель (Panel) и в свойствах напишем такой обработчик   для события OnMouseUp:

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
      ShowMessage('Вы нажали правую кнопку мыши');
end;

Теперь запустив приложение и нажав правую кнопку мыши мы получим сообщение.

TShiftState - тип представляющий собой множество из ниже перечисленных значений и необходимо проверять комбинации допустимых значений.

  TShiftState = set of (ssShift, ssAlt, ssCtrl,
    ssLeft, ssRight, ssMiddle, ssDouble);

значение элементов множества:

  • Нажата клавиша  SHIFT - ssShift;
  • Нажата клавиша ALT - ssAlt;
  • Нажата клавиша CTRL - ssCtrl
  • Нажата  левая кнопка мыши - ssLeft;
  • Нажата правая кнопка мыши - ssRight;
  • Нажата средняя клавиша мыши - ssMiddle;
  •  Использован двойной клик мыши - ssDouble.
Расположим на форме Панель и зададим обработчик OnMouseUp следующего содержания:
procedure TForm1.Panel2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   if ssAlt in Shift then
      ShowMessage('Нажата клавиша Alt');
end;

Запустив приложение нажмем клавишу Alt и кликнув на какой либо из клавиш мыши мы получим сообщение.

В среде Delphi присутствует еще одно событие OnMouseMove, которое происходит при перемещении мыши над объектом.

Давайте создадим это событие для формы:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
      Form1.Caption := 'X = '+ IntToStr(X)+' Y = '+IntToStr(Y);
end;

Заголовок формыЗапустим  приложение и теперь при перемещении указателя мыши мы будем видеть ее координаты в строке заголовка формы.

Итог: мы ознакомились в теории и практике с событиями связанными с компьютерной мышью.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *