Задание. Смоделировать работу светофора. При запуске проекта панель светофора должна быть пустой. После нажатия на кнопку Пуск лампочки светофора начинают переключатся. После нажатия на кнопку Стоп – панель светофора опять пустая. С помощью таймера обеспечить смену сигнала светофора через равные промежутки времени. В поле Скорость вводится интервал таймера.
Ход выполнения проекта
1. Создайте новый проект. Сохраните его в отдельной папке, назовите ее «Светофор».
2. Разместите на форме панель (TPanel) c тремя фигурами (TShape), две кнопки (TButton), текстовое поле (TEdit), надпись (TLabel), таймер (TTimer) в соответствии с образцом:
Это должно выглядеть следующим образом:
![lazarus13-1](http://gospodaretsva.com/wp-content/uploads/2017/02/lazarus13-1.jpg)
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](http://gospodaretsva.com/wp-content/uploads/2017/02/lazarus13-2.jpg)
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](http://gospodaretsva.com/wp-content/uploads/2017/02/lazarus13-3.jpg)
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с). Лампочки светофора начнут переключаться с интервалом в одну секунду.
|