Дана програма моделює роботу світлофора, яка складається з ручного керування та автоматичного. В ручному керуванні світлофором ми можемо самі задавати колір за допомогою кнопки («ручне»), в автоматичному необхідно задати інтервал (тривалість кожного кольору). В автоматичному режимі використана перевірка коректності вводу даних, оскільки користувач може ввести хибні величини (Якщо введені від’ємні числа, то для роботи світлофора ці від’ємні числа беремо по модулю). Дана програма складається з таких компонент, як:
1. Для зображення світлофора використовуємо компоненту TPanel та TBevel. Також використовуються 3 TShape для моделювання кольорів світлофора.
2. Використані компоненти TButton – перемикачі режимів роботи світлофора. Для задання тривалості використовуємо компоненту TGroubBox разом з трьома TEdit і TВutton в ній.
Для ламп світлофора використовується додатковий клас TLamp, який містить такі поля даних, як форма (Shape), колір (Color), період світіння (FPeriod). Для доступу до періоду світіння використовуємо властивість property.
procedure Tmain.FormCreate(Sender: TObject); begin lamps[0]:=TLamp.Create(redLamp,clRed,strToInt(redPeriod.Text)*100);
lamps[1]:=TLamp.Create(yellowLamp,clYellow,strToInt(yellowPeriod.Text)*100);
lamps[2]:=TLamp.Create(greenLamp,clGreen,strToInt(greenPeriod.Text)*100); lamps[3]:=lamps[1];
active:=0; lamps[active].switchOn;
end;
procedure tMain.changeLamp;
begin
lamps[active].switchOff; active:=(active+1)mod 4;
lamps[active].switchOn; end;
procedure Tmain.theTimerTimer(Sender: TObject);
begin changeLamp; theTimer.Interval:=lamps[active].period; end;