Главная > Lazarus >

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

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

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

Advertisement

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

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

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

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

Advertisement

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

lazarus13-1

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

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

Advertisement
КомпонентСвойствоЗначение
Form1CaptionСветофор
Panel1Caption*Пусто*
Shape1ShapestCircle
Shape2ShapestCircle
Shape3ShapestCircle
Label1CaptionСкорость
Edit1Text*пусто*
Button1CaptionПуск
Button2CaptionСтоп

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

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

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

КомпонентСвойствоЗначение
Shape1Brush(Нажать на стрелочку слева от свойства и выбрать color)clRed
Shape2Brush(Нажать на стрелочку слева от свойства и выбрать color)clYellow
Shape3Brush(Нажать на стрелочку слева от свойства и выбрать 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, г. Экибасбуз

5 комментариев для “Урок 13. Программа Светофор”

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

  2. Руслан Ахмадиев

    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; если кому лень )

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *