Программа «Светофор» как объект. Часть 4.

Методы объекта светофор.

В предыдущей части мы рассмотрели создание объекта. Теперь приступим к описанию управляющих методов.

Управление переключением фонарей светофора.

За управление переключением фонарей светофора отвечает метод «work».

procedure Tsvetofor.work;
begin
case num of //nun – номер фонаря светофора
1:begin
fShape5.Visible:=true; //делаем видимым первый фонарь
fImage.Visible:=true; //делаем видимой стрелку
fTm1.Enabled:=true; //запускаем первый таймер;
fTm4.Enabled:=true; //запускаем четвёртый таймер
end;

2: begin
fShape6.Visible:=true; //делаем видимым второй фонарь
fTm2.Enabled:=true; //запускаем второй таймер
end;

3: begin
fShape7.Visible:=true;//делаем видимым третий фонарь
fTm3.Enabled:=true;//запускаем третий таймер
end;

4: begin //одновременно должен гореть первый и второй фонари
fShape5.Visible:=true;
fShape6.Visible:=true;
fTm2.Enabled:=true;
end;

inc(num); //переходим к следующему номеру фонаря

if num>4 then num:=1; //анализ: если пройдены все четыре состояния светофора, то возвращаемся к первому состоянию
end;

Остановить работу светофора.

procedure Tsvetofor.Stop;
begin
fShape5.Visible:=false;
fShape6.Visible:=false;
fShape7.Visible:=false;
fTm1.Enabled:=false;
fTm2.Enabled:=false;
fTm3.Enabled:=false;
fTm4.Enabled:=false;
fImage.Visible:=false;
end;

Обработчики тика таймера

Когда таймер отсчитает установленное количество миллисекунд, наступает событие «onTimer». Оно обрабатывется метотодом, назначенным событию.

Вспомним, что при создании объекта «таймер» мы записали:

fTm1.OnTimer:= fTm1Timer;

Поэтому обработчики будут иметь следующий вид:

procedure TSvetofor.fTm1Timer(Sender: Tobject);
begin
Stop; //метод, в которам прописана остановка работы светофора
Work; //метод, в которам прописан запуск работы светофора; номер активного фонаря хранится в поле «num:integer;»
end;

procedure TSvetofor.fTm2Timer(Sender: Tobject);
begin
Stop;
Work;
end;

procedure TSvetofor.fTm3Timer(Sender: Tobject);
begin
Stop;
Work;
end;

procedure TSvetofor.fTm4Timer(Sender: Tobject);
begin
fImage.Visible:=false;
fTm4.Enabled:=false;
end;

Кнопка «стоп»

procedure TSvetofor.btStopOnClick(Sender: Tobject);
begin
Stop;//метод, в котором прописана остановка работы светофора
end;

Кнопка «GO»

procedure TSvetofor.btGOOnClick(Sender: Tobject);
begin
num:=1; //устанавливаем номер фонаря, который зажжётся первым
Work;
end;

Установить новый интервал для таймера.

procedure TSvetofor.LbDblClick(Sender: Tobject);
begin
Stop;
Interval:=strToInt(LB.Items[LB.ItemIndex]);//получить значение выделенной строки и преобразовать его в целое число; значение присваивается полю «Interval»

fTm1.Interval:=Interval;//установить новые значения для таймеров
fTm2.Interval:=(Interval div 10)*6;
fTm3.Interval:=(Interval div 10)*15;
fTm4.Interval:=(Interval div 10)*5;
num:=1;//сбросить номер фонаря
Work;//запустить работу светофора
end;

Заключение.

Итак, на примере модели работы светофора мы рассмотрели создание объекта. Теперь этот объект можно включать в любую делфи-программу.

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

При создании самого класса объекта мы познакомились:

  1. со структурой класса;
  2. с использованием конструктора;
  3. с программным созданием компонент;
  4. с созданием и назначением обработчиков событий;
  5. с назначением свойств компонентам
  6. и с некоторыми другими моментами.

Данный пример является весьма важным с точки зрения приёмов работы с объектами.

Далее мы продолжим знакомство со стандартными компонентами из панели компонентов.

Вернуться к части 3.

Обновлено: 01.06.2021 — 17:55

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

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