События мыши для визуальных компонентов

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

Для визуальных компонентов Delphi определены следующие основные события, связанные с мышью:

— OnClick – щелчок мыши по компоненту;
— OnDblClick – двойной щелчок мыши по компоненту;
— OnMouseDown – нажатие кнопки мыши над компонентом;
— OnMouseMove – перемещение указателя мыши над компонентом;
— OnMouseUp – отпускание нажатой кнопки мыши;
— OnMouseActivate – щелчок мыши по элементу управления, когда родительская форма, на которой он размещен, неактивна;
— OnMouseEnter – вход указателя мыши в пределы элемента управления;
— OnMouseLeave – выход указателя мыши за пределы элемента управления.

Рассмотрим следующий пример. Для демонстрации обработки событий взята форма, на которой размещены две кнопки BitBtn с заголовками ОК и Close. На форме также находится метка Label. Кнопка Close будет закрывать приложение; кнопка ОК будет реагировать на события OnClick (кнопка случайным образом переместится на форме) и OnMouseMove (в тексте метки отобразятся текущие координаты верхнего левого угла кнопки). Метка Label1 будет реагировать на события OnMouseDown (метка изменит свой шрифт на полужирный), OnMouseUp (форма изменит цвет своего фона на желтый) и OnDblClick (кнопка ОК вернется в начальную позицию).

Следует отметить, что компоненты обрабатывают события мыши только тогда, когда указатель находится над ними. Для создания обработчиков событий следует выбрать соответствующий элемент на форме и в Инспекторе объектов на странице Events активизировать мышью требуемое событие. Затем в автоматически сгенерированном обработчике события написать программный код. Например, выбрав кнопку ОК, перейти в Инспектор объектов и два раза щелкнуть левой кнопкой мыши в поле справа от события OnClick, после чего внести в обработчик следующие строки:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

// Инициализация генератора псевдослучайных чисел

Randomize;

BitBtn1.Top:= Random(Form1.ClientHeight – BitBtn1.Height);

BitBtn1.Left:= Random(Form1.ClientWidth – BitBtn1.Width);

end;

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

Для события OnMouseMove следует аналогичным образом создать обработчик, в котором меняется текст метки, отображающий текущие координаты кнопки:

procedure TForm1.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

Label1.Captions:= ‘X=’ + IntToStr(BitBtn1.Left) + ‘; Y=’ + IntToStr(BitBtn1.Top);

end;

Путем выполнения аналогичных действий создаются обработчики событий для метки Label1. Обработчик события OnMouseDown изменяет стиль шрифта метки и имеет такой вид:

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

begin

Label1.Font.Style:= [fsBold];

end;

Обработчик события OnMouseUp метки Labell обеспечивает изменение цвета фона формы:

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

begin

Form1.Color: = clYellow;

end;

И наконец, следует создать обработчик двойного щелчка мышью (событие OnDblClick) по метке Label1:

procedure TForm1.Label1DblClick(Sender: TObject);

begin

BitBtn1.Top:= 72;

BitBtn1.Left:= 48;

end;

Этот обработчик возвращает кнопку ОК в первоначальную позицию.

Кроме рассмотренных выше событий, компонент формы (класс TForm) и многострочный редактор RichEdit имеют еще три события, связанных с мышью:

— OnMouseWheel – возникает при любом вращении колеса мыши;
— OnMouseWheelDown – генерируется при нажатии колеса мыши;
— OnMouseWheelUp – происходит при отпускании колеса мыши.
Добавить комментарий