Методы объекта светофор.
В предыдущей части мы рассмотрели создание объекта. Теперь приступим к описанию управляющих методов.
Управление переключением фонарей светофора.
За управление переключением фонарей светофора отвечает метод «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;
Заключение.
Итак, на примере модели работы светофора мы рассмотрели создание объекта. Теперь этот объект можно включать в любую делфи-программу.
Написав одну строку кода мы получаем работающую модель, совершенно не зная устройства данного объекта. Сам объект хранится в отдельном модуле, который необходимо подключить к программе.
При создании самого класса объекта мы познакомились:
- со структурой класса;
- с использованием конструктора;
- с программным созданием компонент;
- с созданием и назначением обработчиков событий;
- с назначением свойств компонентам
- и с некоторыми другими моментами.
Данный пример является весьма важным с точки зрения приёмов работы с объектами.
Далее мы продолжим знакомство со стандартными компонентами из панели компонентов.