Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

 

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

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

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; просмотров: 266; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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