Цель работы - создать программу, выполняющую следующие действия:

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

2. Когда указатель мыши наведен на лампочку, она меняет свой цвет.

Практическая работа № 14 Светофор

Рис. 34.

3. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.

Описание плана разработки программы

1. Открыть новый проект.

2. Разместить на форме экземпляры компонентов: фигура Shape.

3. Выполнить следующие действия:

Таблица 14.

Выделенный объект

Вкладка окна Object Inspector

Имя свойства/ имя события

Действие

Form1

Properties

Caption

Установка имени формы "Светофор"

Height

Присвоить значение 300

Width

Присвоить значение 120

BorderIcons (Служебные кнопки)

Выбрать для подсвойства biMinimize (Сворачивание) и biMaximize (Разворачивание) значение False

Color

Задать стандартный серый цвет

BorderStyle (Стиль рамки)

Выбрать значение bsSingle

Events

OnMouseMove

В процедуру передаются дополнительные параметры: Shift - указывает, не была ли при перемещении нажата клавиша SHIFT, CTRL или ALT; X -горизонтальная координата указателя мыши; Y -вертикальная координата указателя.

Продолжение таблицы 14.

Выделенный объект

Вкладка окна Object Inspector

Имя свойства/ имя события

Действие

Shape1

(Вкладка Additional)

Properties

Height

Присвоить значение 6l

Width

Присвоить значение 6l

Shape (Форма)

Выбрать значение stCircle (Круг)

Pen (Контур)

Выбрать для подсвойства Color (Цвет) значение clRed (красный цвет)

Brush (Кисть)

Выбрать для подсвойства Style (стиль) значение bsClear (прозрачный)

Enabled (Включен) Выбрать значение False (Нет)

Shape2

(Вкладка Additional)

Properties

Height Присвоить значение 6l

Width Присвоить значение 6l

Shape Выбрать значение stCircle (Круг)

Pen

Выбрать для подсвойства Color (Цвет) значение clYellow (желтый цвет)

Brush

Выбрать для подсвойства Style значение bsClear

Enabled (Включен)

Выбрать значение False (Нет)

Shape3

(Вкладка Additional)

Properties

Height

Присвоить значение 6l

Width

Присвоить значение 6l

Shape

Выбрать значение stCircle (Круг)

Pen

Выбрать для подсвойства Color (Цвет) значение clLime (ярко-зеленый цвет)

Brush

Выбрать для подсвойства Style значение bsClear

Enabled (Включен)

Выбрать значение False (Нет)

4. Написать функцию OnShape, которая вызывается из процедуры FormMouseMove.

5. Работа функции определяет следующие события:

Если указатель мыши не наведен на лампочку, то ее цвет будет прозрачным.

Если указатель мыши наведен на лампочку, то ее цвет будет соответствовать цветам светофора. r := sh.Width div 2; {r - радиус фигуры} cx := sh.Left + r; {cx, cy - координаты центра фигуры} cy := sh.Top + r;

d2 := (X - cx) * (X - cx) + (Y - cy) * (Y - cy); {d2 - квадрат расстояния от центра} OnShape := bsClear; {указатель мыши не наведен на лампочку, т.е. находиться за пределами фигуры}

if d2 > r*r then ObShape := bsSolid; {указатель мыши наведен на лампочку, т.е.

находиться внутри фигуры}

6. Выравнивание элементов:

1) Выделить все три фигуры.

2) Выбрать команду Edit - Align (Правка - Выровнить).

3) Откроется диалоговое окно Alignment (Выравнивание).

4) Установить слева переключатель Center in Window (Центрировать в окне).

5) Установить справа переключатель Space Equally (С равными промежутками).

6) Щелкнуть на кнопке OK.

7. Сохраните проект, запустите и протестируйте его.

Листинг подпрограммы

Function OnShape (sh: TShape: X, Y: Integer): TBrushStyle;
var r, cx, cy, d2: Integer;
begin
r := sh.Width div 2;
cx := sh.Left + r;
cy := sh.Top + r;
d2 := (X - cx) * (X - cx) + (Y - cy) * (Y - cy);
OnShape := bsClear;
if d2 >
r*r then ObShape := bsSolid;
end;
procedure TForm1.FormMouseMove (Sender: TObject, Shift: TShiftState;
X, Y: Integer););
begin
Shape1.Brush.Color := clRed;
Shape1.Brush.Style := OnShape (Shape1, X, Y);
Shape2.Brush.Color := clYellow;
Shape2.Brush.Style := OnShape (Shape2, X, Y);
Shape3.Brush.Color := clLime;
Shape.Brush.Style := OnShape (Shape3, X, Y);
end;

Практическая работа № 13 Применение полос прокрутки || Оглавление || Практическая работа № 15 "Ханойские башни"


Практикум по Delphi для решения прикладных задач



Новости за месяц

  • Октябрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс