Урок 13. Программа Светофор

lazarus13-0В этом урока мы продолжим знакомиться с компонентами Lazarus. Сегодня для создания проекта «Светофор» нам понадобятся компоненты: Timer (Таймер), Shape (Фигуры), Panel (Панель).

Перед созданием приложения следует изучить описание новых компонентов.

Задание. Смоделировать работу светофора. При запуске проекта панель светофора должна быть пустой. После нажатия на кнопку Пуск лампочки светофора начинают переключатся. После нажатия на кнопку Стоп – панель светофора опять пустая. С помощью таймера обеспечить смену сигнала светофора через равные промежутки времени. В поле Скорость вводится интервал таймера.

Ход выполнения проекта

1. Создайте новый проект. Сохраните его в отдельной папке, назовите ее «Светофор».

2. Разместите на форме панель (TPanel) c тремя фигурами (TShape), две кнопки (TButton), текстовое поле (TEdit), надпись (TLabel), таймер (TTimer) в соответствии с образцом:

Это должно выглядеть следующим образом:

lazarus13-1

2. Делаем оформление:

Установите данные значения свойств в инспекторе объектов:

Компонент Свойство Значение
Form1 Caption Светофор
Panel1 Caption *Пусто*
Shape1 Shape stCircle
Shape2 Shape stCircle
Shape3 Shape stCircle
Label1 Caption Скорость
Edit1 Text *пусто*
Button1 Caption Пуск
Button2 Caption Стоп

3. Создаем событие для Form1 в разделе OnCreate – Нажать троеточие

Создаем событие для Timer1 в разделе OnTimer – Нажать троеточие

4. Задаем цвета фигурам:

Компонент Свойство Значение
Shape1 Brush(Нажать на стрелочку слева от свойства и выбрать color) clRed
Shape2 Brush(Нажать на стрелочку слева от свойства и выбрать color) clYellow
Shape3 Brush(Нажать на стрелочку слева от свойства и выбрать color) clGreen

Финальный вид работы:

lazarus13-2

5. Во время загрузки формы таймер отключается, фигуры на панели становятся невидимыми.

Создаем обработчик события FormCreate (дважды щелкаем по компоненту Form1) и вставляем данный код:

var k:integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled:=false;
  Shape1.Visible:=false;
  Shape2.Visible:=false;
  Shape3.Visible:=false;
end;

6. Чтобы переключались лампочки светофора, напишите программный код в обработчике события Timer1Timer. Код этот будет выполняться с интервалом, который пользователь введет в поле Скорость. По показаниям таймера определяется номер лампочки, которая должна включиться в данный момент.

Дважды щелкаем по компоненту Timer1 и вставляем данный код:

lazarus13-3

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

Дважды щелкаем по компоненту Button1 и вставляем код:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Interval:=StrToInt(Edit1.text);
  k:=0;
  Timer1.Enabled:=true;
end;

7. Напишите программный код для кнопки Стоп. После щелчка на кнопке таймер должен отключиться, лампочки светофора снова становятся невидимыми.

Дважды щелкаем по компоненту Button2  и вставляем код:

procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled:=false;
  Shape1.Visible:=false;
  Shape2.Visible:=false;
  Shape3.Visible:=false;
end;

8. Запустите проект. В поле Скорость введите число 1000 (1000 мс=1с). Лампочки светофора начнут переключаться с интервалом в одну секунду.

Артем Позняк,  ученик 10 «А» класса СОШ №23, г. Экибасбуз

Подписаться
Уведомить о
guest

5 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Руслан Ахмадиев
Руслан Ахмадиев
6 лет назад

procedure TForm1.Timer1Timer(Sender: TObject);
begin
k:=k+1; //определяем, фигура с каким номером
//в данный момент должна быть видимой
if k mod 3=1 then
begin
Shape1.Visible:=true;
Shape2.Visible:=false;
Shape3.Visible:=false;
end
else
if k mod 3=2 then
begin
Shape1.Visible:=false;
Shape2.Visible:=true;
Shape3.Visible:=false;
end
else
begin
Shape1.Visible:=false;
Shape2.Visible:=false;
Shape3.Visible:=true;
end
end; если кому лень )

Лерчик
Лерчик
Ответить на  Руслан Ахмадиев
4 лет назад

Пацан,спасибо,так лень было писать,с меня должок 🙂

Руслан Ахмадиев
Руслан Ахмадиев
6 лет назад

Отличная работа. Спасибо Артем.

Anna
Anna
6 лет назад

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

Игорь
Игорь
7 лет назад

Хорошо постарался, жаль, что уроков так мало…