ТОП 10:

Управление объектом с помощью мыши



 

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

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

1. OnClick – событие, которое возникает, при щелчке левой кнопкой мыши по элементу. Данное событие часто использовалось в различных программах пособия.

2. OnDblClick– событие, происходящее при двойном щелчке мыши.

3. OnMouseDown– событие, которое возникает при щелчке на любой кнопке мыши.

4. OnMouseUp– событие, которое возникает при отпускании любой кнопки мыши.

5. OnMouseMove– событие, которое возникает при перемещении указателя мыши.

 

Создание проекта с использованием

Управления объектом с помощью мыши

Рассмотрим проект, в котором используется управление объектом при перемещении указателя мыши.

Пример.Создать проект убегающей кнопки Пуск. В этом проекте кнопка Пуск должна убегать от наводимой на неё мышки.

 

Поместим на форму компонент TButton.

 

Рис. 24 Окно проекта «Убегающая кнопка»

 

В данном примере нужно создать обработчик события перемещения мыши: MouseMove. Для этого в окне Инспектора объектов на вкладке Events дважды щелкнем по событию OnMouseMove. В окне программного кода откроется процедура:

 

procedureTForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 
end.

 

Чтобы заставить кнопку убегать, изменим ее свойство Left (расстояние до левой границы) на ширину (Width) кнопки. А свойство Top (расстояние до нижней границы) изменим на высоту (Height) кнопки. Мышка может перемешаться вправо, влево, вверх и вниз, поэтому возможны четыре варианта изменения этих свойств.

Опишем в операторе выбора Case возможные варианты изменения свойств Left и Top кнопки с использованием случайной переменной i. Так как переменная i может принимать четыре случайных значения, то ей необходимо выполнить следующее присвоение: i:= random(4). Текст программы обработчика события OnMouseMove будет следующим:

 

procedureTForm1.Button1MouseMove(Sender: Tobject; Shift: TshiftState; X, Y: Integer);
vari:integer;
begin
Randomize;
i:=random(4);
casei of
0: Button1.Left:= Button1.Left+Button1.Width;
1: Button1.Left:= Button1.Left-Button1.Width;
2: Button1.Top:= Button1.Top+Button1.Height;
3: Button1.Top:= Button1.Top-Button1.Height;
end;
end.

Чтобы кнопка не вылетела за пределы окна, нужно проверить каждую позицию кнопки относительно окна с помощью условного оператора.

Если левая позиция кнопки меньше нуля, то следующая конструкция установит ее в ноль:

If Button1.left<0 then Button1.left:=0

Если левая позиция кнопки плюс её ширина больше ширины окна, то левой позиции необходимо присвоить значение «ширина окна» минус «ширина кнопки»:

If (Button1.left + Button1.Width)>Form1.Width

then Button1.left:= Form1.Width - Button1.Width

Аналогично проверяется и верхняя позиция кнопки. Полностью текст программы будет выглядеть следующим образом:

procedureTForm1.Button1MouseMove(Sender: Tobject; Shift: TshiftState; X, Y: Integer);
vari:integer;
begin
i:=random(4);
casei of
0: Button1.Left:= Button1.Left+Button1.Width;
1: Button1.Left:= Button1.Left-Button1.Width;
2: Button1.Top:= Button1.Top+Button1.Height;
3: Button1.Top:= Button1.Top-Button1.Height;
end;
If Button1.left<0 then Button1.left:=0;
If (Button1.left + Button1.Width)>Form1.Width then Button1.left:= Form1.Width - Button1.Width;
If Button1.Top<0 then Button1.Top:=0;
If (Button1.Top + Button1.Height)>Form1. Height then Button1.Top:= Form1. Height - Button1. Height;
end.

Задания

1. Создать проект, в котором по форме случайным образом перемещается мячик. При щелчке на шарике мышью, должно отобразиться сообщение: «Попадание».

2. Изменить предыдущий проект таким образом, чтобы в нем подсчитывалось количество попаданий.

3. Создать проект «Воздушные шары». В этом проекте должны двигаться снизу вверх несколько воздушных шаров. При щелчке мышью по шарику, он должен взорваться. В проекте следует предусмотреть подсчет количества попаданий. Если шарик улетел за верхнюю границу, то необходимо уменьшить количество жизней.

 







Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.66.217 (0.006 с.)