Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posobie_2_chast.doc
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
4.1 Mб
Скачать

§3 Управление объектами

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

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

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

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

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

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

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

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

    1. Создание проекта с использованием управления объектом с помощью мыши

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

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

Поместим на форму компонент 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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]