- •Саблукова н.Г. Программирование в среде delphi
- •Часть II
- •Создание проектов
- •Содержание
- •§1 Добавление графических изображений в проект
- •§2 Использование элементов анимации и мультипликации
- •Движение объектов
- •Задания
- •2.2 Изменение форм и видов объектов
- •Задания
- •2.3 Изменение размеров объектов
- •2.4 Пример программы движения объектов с элементами анимации и мультипликации типа «Тараканьи бега»
- •§3 Управление объектами
- •3.1 Управление объектом с помощью мыши
- •Создание проекта с использованием управления объектом с помощью мыши
- •Задания
- •3.3 Управление объектом с помощью клавиатуры
- •Задания
- •§4 Работа со строками
- •4.1 Строковый тип данных
- •4.2 Использование компонента tMemo для работы со строками
- •4.3 Работа со строками с помощью компонентов
- •Задания
- •5. Массивы
- •5.1 Одномерные массивы
- •Доступ к элементам массива
- •Задания
- •Многомерные массивы. Пример создания проекта с границами типа «Лабиринт»
- •Задания
- •6. Создание меню
- •6.1 Главное и вложенное меню
- •6.2 Создание текстового редактора с изменяемыми настройками типа «меню» и элементами диалога
- •7. Элементы мультимедиа
- •Литература
§3 Управление объектами
3.1 Управление объектом с помощью мыши
При создании серьезного приложения нужно предусмотреть различные варианты работы с программой. Управление программой может осуществляться как с помощью мыши, так и с помощью клавиатуры.
Рассмотрим события, отвечающие за управление программой с помощью мыши.
OnClick – событие, которое возникает, при щелчке левой кнопкой мыши по элементу. Данное событие часто использовалось в различных программах пособия.
OnDblClick – событие, происходящее при двойном щелчке мыши.
OnMouseDown – событие, которое возникает при щелчке на любой кнопке мыши.
OnMouseUp – событие, которое возникает при отпускании любой кнопки мыши.
OnMouseMove – событие, которое возникает при перемещении указателя мыши.
Создание проекта с использованием управления объектом с помощью мыши
Рассмотрим проект, в котором используется управление объектом при перемещении указателя мыши.
Пример. Создать проект убегающей кнопки Пуск. В этом проекте кнопка Пуск должна убегать от наводимой на неё мышки. |
Поместим на форму компонент TButton.
Рис. 24 Окно проекта «Убегающая кнопка»
В данном примере нужно создать обработчик события перемещения мыши: MouseMove. Для этого в окне Инспектора объектов на вкладке Events дважды щелкнем по событию OnMouseMove. В окне программного кода откроется процедура:
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); |
begin |
|
end. |
Чтобы заставить кнопку убегать, изменим ее свойство Left (расстояние до левой границы) на ширину (Width) кнопки. А свойство Top (расстояние до нижней границы) изменим на высоту (Height) кнопки. Мышка может перемешаться вправо, влево, вверх и вниз, поэтому возможны четыре варианта изменения этих свойств.
Опишем в операторе выбора Case возможные варианты изменения свойств Left и Top кнопки с использованием случайной переменной i. Так как переменная i может принимать четыре случайных значения, то ей необходимо выполнить следующее присвоение: i:= random(4). Текст программы обработчика события OnMouseMove будет следующим:
procedure TForm1.Button1MouseMove(Sender: Tobject; Shift: TshiftState; X, Y: Integer); |
var i:integer; |
begin |
Randomize; |
i:=random(4); |
case i 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
Аналогично проверяется и верхняя позиция кнопки. Полностью текст программы будет выглядеть следующим образом:
procedure TForm1.Button1MouseMove(Sender: Tobject; Shift: TshiftState; X, Y: Integer); |
var i:integer; |
begin |
i:=random(4); |
case i 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. |
