Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Задание Светофор






 

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

 

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

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

 

Рис. 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;

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.