События перемещения мыши на форме в Delphi и C++Builder
Здесь будут исследованы события
формы, появляющиеся при перемещениях пользователем указателя мыши по форме:
·
OnMouseEnter. Возникает, когда пользователь переводит
указатель мыши на поверхность формы — перемещая его с другого компонента формы
или из-за пределов формы.
·
OnMouseMove. Возникает, когда указатель мыши
перемещается по форме.
·
OnMouseLeave. Возникает, когда указатель
мыши покидает форму.
·
OnMouseWheel. Возникает, когда пользователь
вращает колесо мыши в любую сторону.
·
OnMouseWheelDown. Возникает, когда пользователь
вращает колесо мыши вниз.
·
OnMouseWheelUp. Возникает, когда
пользователь вращает колесо мыши вверх.
Запустите на выполнение Delphi или C++Builder. Создайте новый проект, выбрав в меню File | New | VCL
Forms Application - Delphi (File | New | VCL Forms Application – C++Builder).
Положите на форму компонент ListBox. Сюда будут помещаться сообщения программы. Установите
в значение True все подсвойства свойства Anchors: akLeft, akTop, akRight
и akBottom. Компонент будет привязан ко всем
сторонам формы.
В верхней части формы разместите четыре
компонента Label. Двум правым
компонентам метки присвойте имена LX
и LY. Они будут использованы для
отображения текущих координат курсора мыши.
Рис.
1. Созданная форма
События перемещения мыши
Выделите мышью форму, перейдите
на вкладку событий в Инспекторе Объектов. Создайте следующие обработчики событий для OnMouseEnter и OnMouseLeave:
procedure
begin
end;
procedure
begin
end;
TForm1.FormMouseEnter(Sender:
TObject);begin
ListBox1.Items.Add('FormMouseEnter');end;
procedure
TForm1.FormMouseLeave(Sender: TObject);begin
ListBox1.Items.Add('FormMouseLeave');end;
C++Builder
void __fastcall
void __fastcall
TForm1::FormMouseEnter(TObject *Sender){
ListBox1->Items->Add("FormMouseEnter");}void __fastcall
TForm1::FormMouseLeave(TObject *Sender){
ListBox1->Items->Add("FormMouseLeave");}
Запустите программу на
выполнение. Перемещайте мышь по форме. Проследите за порядком появления
событий.
Выделите мышью форму, перейдите
на вкладку событий в Инспекторе Объектов. Создайте следующий обработчик события для OnMouseMove:
procedure
begin
end;
TForm1.FormMouseMove(Sender:
TObject; Shift: TShiftState; X,
Y: Integer); begin
LX.Caption := IntToStr(X);
LY.Caption := IntToStr(Y); end;
C++Builder
void __fastcall
TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) {
LX->Caption = IntToStr(X);
LY->Caption = IntToStr(Y); }
Обработчику события перемещения
мыши по форме OnMouseMove передаются параметры X
и Y, которые задают, соответственно, горизонтальную и
вертикальную координату курсора мыши (в пикселах) относительно клиентской
области окна. При перемещении мыши по форме в тексты меток LX
и LY будут помещаться текущие координаты курсора мыши.
События вращения колеса мыши
Напишите следующий обработчик
события вращения пользователем колеса мыши OnMouseWheel:
procedure
begin
end;
TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);begin
ListBox1.Items.Add('FormMouseWheel, WheelDelta = ' + IntToStr(WheelDelta));end;
C++Builder
void __fastcall
TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta, TPoint
&MousePos, bool &Handled) {
ListBox1->Items->Add("FormMouseWheel,
WheelDelta = " + IntToStr(WheelDelta)); }
Обработчику события передается и
целочисленный параметр WheelDelta, определяющий величину смещения
колеса мыши. Если это число положительное, то колесо мыши вращается вверх, если
отрицательное, то вниз.
Напишите следующие обработчики
событий вращения колеса мыши вверх и вниз: OnMouseWheelUp и OnMouseWheelDown:
procedure
TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean); begin
ListBox1.Items.Add('FormMouseWheelUp. X = ' +
IntToStr(MousePos.X) + ', Y = ' +
IntToStr(MousePos.Y)); end; procedure
TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean); begin
ListBox1.Items.Add('FormMouseWheelDown. X = ' +
IntToStr(MousePos.X) + ', Y = ' +
IntToStr(MousePos.Y)); end;
C++Builder
void __fastcall
TForm1::FormMouseWheelUp(TObject *Sender, TShiftState Shift,
TPoint &MousePos, bool &Handled){
ListBox1->Items->Add("FormMouseWheelUp. X = " + IntToStr(__int64(MousePos.x))
+ ", Y = " + IntToStr(__int64(MousePos.y)));}void __fastcall
TForm1::FormMouseWheelDown(TObject *Sender, TShiftState Shift,
TPoint &MousePos, bool &Handled) {
ListBox1->Items->Add("FormMouseWheelDown. X = " + IntToStr(__int64(MousePos.x))
+ ", Y = " + IntToStr(__int64(MousePos.y))); }
Параметр MousePos,
передаваемый обоим событиям, является экземпляром класса TPoint. Он содержит
члены X и Y, определяющие координаты курсора мыши относительно
экрана.
Запустите программу на выполнение. Выполняйте
вращение колеса мыши вверх и вниз. Посмотрите на результаты.
Комментариев нет:
Отправить комментарий