Рекомендуемый вид формы при веден на рис. 1.18.


Рис. 1.18. Форма программы Таймер

( Чтобы обеспечить синхронизацию компонентов UpDown и Edit, нужно в свойство Associate компонента UpDown записать имя соответствующего компонента Edit.
Это надо сделать во время создания формы. )

var
// интервал
min: integer; // минут
sec: integer; // секунд •

// в заголовок окна программа
// выводит, сколько времени осталось
procedure ShowTime;
var
buf: string[20];
begin
buf := 'Таймер ';
// минуты и секунды выводим двумя цифрами
if min < 10 then
buf := buf + '0' + IntToStr(min) + ' : '
else
buf := buf + IntToStr(min) + ' : ';

if sec < 10 then
buf := buf + '0' + IntToStr(sec)
else
buf := buf + IntToStr(sec);

Forml.Caption := buf;
end;
// сигнал от таймера
procedure TForml.TimerlTimer(Sender: TObject);
begin
sec := sec - 1;
if (min = 0) and {sec = 0) then
// заданный интервал истек
begin
Timerl.Enabled := False; // остановить таймер
UpDownl.Enabled := True;
UpDown2.Enabled := True ;
Editl.Enabled := True;
Edit2.Enabled :¦ True;
Buttonl.Caption := 'Пуск';
ShowMessage('Заданный интервал истек!');
exit;
end;

if (sec = 0) and (min > 0) then
begin
sec := 60;
min := min — 1;
end;

ShowTime; // показать, сколько времени осталось
end;

// щелчок на кнопке Пуск/Стоп
procedure TForml.ButtonlClick(Sender: TObject);
begin
if Forml.Timerl.Enabled then
// таймер работает, надо остановить
begin
Timerl.Enabled := False; // стоп
Forml.Caption := 'Таймер1;
Buttonl.Caption := 'Пуск1;
// разрешить ввод интервала
UpDownl.Enabled:= True;
UpDown2.Enabled:= True;
Editl.Enabled := True;
Edit2.Enabled := True;
end
_
else
// таймер стоит, надо запустить
begin
min := UpDownl.Position;
sec := UpDown2.Position;
if (sec = 0) and (min = 0) then
begin
ShowMessage('Надо задать интервал!');
exit;
end;

Editl.Enabled := False;
Edit2.Enabled := False;
UpDownl.Enabled:= False;
UpDown2.Enabled:= False;
Buttonl.Caption := 'Стоп1;
Timer1.Enabled := True; // пуск таймера
ShowTime;
end;
end;

end.