Всем привет!
В этой статье я расскажу вам о щелчке мыши и его свойствах в Delphi 7
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;
Запустим приложение и теперь при перемещении указателя мыши мы будем видеть ее координаты в строке заголовка формы.
Итог: мы ознакомились в теории и практике с событиями, связанными с компьютерной мышью.
Отредактировано Pirate (2013-05-18 13:48:46)