Щас еще такая проблема ребята: создал я шесть лейблов со временем, первый утро, второй обед, третий предзакат, четвертый вечер, пятый ночь и шестой рассвет внизу окна и кинул на форму пять прогрессбаров. Первый прогрессбар отсчитывает время от первого лейбла с утренним временем до рассвета, второй от второго лейбла с обеденным временем и до времени третьего лейбла, с предзакатным временем, третий прогрессбар время от третьего лейбла с предзакатным временем и до четвертого лейбла с вечерним временем, четвертый прогрессбар время от четвертого лейбла с вечерним временем до пятого лейбла с ночным временем, и пятый прогрессбар время от пятого лейбла с ночным временем и до времени первого лейбла с утренним временем.
А теперь у меня вопрос, почему при запуске программы у меня запускаются все прогрессбары, мой код см. ниже
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls;
type
TForm2 = class(TForm)
LabelUtro: TLabel;
LabelObed: TLabel;
ProgressBarUtro: TProgressBar;
TimerUtro: TTimer;
ProgressBarObed: TProgressBar;
ProgressBarPredzakat: TProgressBar;
ProgressBarVecher: TProgressBar;
ProgressBarNoch: TProgressBar;
TimerObed: TTimer;
TimerPredzakat: TTimer;
TimerVecher: TTimer;
TimerNoch: TTimer;
LabelPredzakat: TLabel;
LabelVecher: TLabel;
LabelNoch: TLabel;
LabelRassvet: TLabel;
procedure FormShow(Sender: TObject);
procedure TimerUtroTimer(Sender: TObject);
procedure TimerObedTimer(Sender: TObject);
procedure TimerPredzakatTimer(Sender: TObject);
procedure TimerVecherTimer(Sender: TObject);
procedure TimerNochTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
RazUtroRassvet, RazObedPredzakat, RazPredzakatVecher, RazVecherNoch, RazNochUtro,
RazUtroNow, RazObedNow, RazPredzakatNow, RazVecherNow, RazNochNow,
BarUtroNow, BarObedNow, BarPredzakatNow, BarVecherNow, BarNochNow,
PerUtroRassvet, PerObedPredzakat, PerpredzakatVecher, PerVecherNoch, PerNochUtro:integer;
implementation
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject);
var
TimeUtro, TimeObed, TimePredzakat, TimeVecher, TimeNoch, TimeRassvet, TimePolnoch: TDateTime;
begin
TimeUtro:=StrtoTime(LabelUtro.Caption);
TimeObed:=StrtoTime(LabelObed.Caption);
TimePredzakat:=StrtoTime(LabelPredzakat.Caption);
TimeVecher:=StrtoTime(LabelVecher.Caption);
TimeNoch:=StrtoTime(LabelNoch.Caption);
TimeRassvet:=StrtoTime(LabelRassvet.Caption);
TimePolnoch:=StrToTime('23:59');
//---------------------------------------------------------------------------------------------------------
RazUtroNow:=((StrToInt(FormatDateTime('h',Time)))*60+StrToInt(FormatDateTime('n',Time)))*60-
((StrToInt(FormatDateTime('h',TimeUtro)))*60+StrToInt(FormatDateTime('n',TimeUtro)))*60;
RazObedNow:=((StrToInt(FormatDateTime('h',Time)))*60+StrToInt(FormatDateTime('n',Time)))*60-
((StrToInt(FormatDateTime('h',TimeObed)))*60+StrToInt(FormatDateTime('n',TimeObed)))*60;
RazPredzakatNow:=((StrToInt(FormatDateTime('h',Time)))*60+StrToInt(FormatDateTime('n',Time)))*60-
((StrToInt(FormatDateTime('h',TimePredzakat)))*60+StrToInt(FormatDateTime('n',TimePredzakat)))*60;
RazVecherNow:=((StrToInt(FormatDateTime('h',Time)))*60+StrToInt(FormatDateTime('n',Time)))*60-
((StrToInt(FormatDateTime('h',TimeVecher)))*60+StrToInt(FormatDateTime('n',TimeVecher)))*60;
RazNochNow:=((StrToInt(FormatDateTime('h',Time)))*60+StrToInt(FormatDateTime('n',Time)))*60-
((StrToInt(FormatDateTime('h',TimeNoch)))*60+StrToInt(FormatDateTime('n',TimeNoch)))*60;
//-------------------------------------------------------------------------------------------------------------
//-------------------
RazUtroRassvet:=((StrToInt(FormatDateTime('h',TimeRassvet)))*60+StrToInt(FormatDateTime('n',TimeRassvet)))*60-
((StrToInt(FormatDateTime('h',TimeUtro)))*60+StrToInt(FormatDateTime('n',TimeUtro)))*60;
RazObedPredzakat:=((StrToInt(FormatDateTime('h',TimePredzakat)))*60+StrToInt(FormatDateTime('n',TimePredzakat)))*60-
((StrToInt(FormatDateTime('h',TimeObed)))*60+StrToInt(FormatDateTime('n',TimeObed)))*60;
RazPredzakatVecher:=((StrToInt(FormatDateTime('h',TimeVecher)))*60+StrToInt(FormatDateTime('n',TimeVecher)))*60-
((StrToInt(FormatDateTime('h',TimePredzakat)))*60+StrToInt(FormatDateTime('n',TimePredzakat)))*60;
RazVecherNoch:=((StrToInt(FormatDateTime('h',TimeNoch)))*60+StrToInt(FormatDateTime('n',TimeNoch)))*60-
((StrToInt(FormatDateTime('h',TimeVecher)))*60+StrToInt(FormatDateTime('n',TimeVecher)))*60;
RazNochUtro:=60+((StrToInt(FormatDateTime('h',TimePolnoch)))*60+StrToInt(FormatDateTime('n',TimePolnoch)))*60-
((StrToInt(FormatDateTime('h',TimeNoch)))*60+StrToInt(FormatDateTime('n',TimeNoch)))*60+((StrToInt(FormatDateTime('h',TimeUtro)))*60+StrToInt(FormatDateTime('n',TimeUtro)))*60;
//-------------------
if RazUtroRassvet Mod 2 <> 0 then RazUtroRassvet:=RazUtroRassvet-1;
if RazObedPredzakat Mod 2 <> 0 then RazUtroRassvet:=RazUtroRassvet-1;
if RazPredzakatVecher Mod 2 <> 0 then RazUtroRassvet:=RazUtroRassvet-1;
if RazVecherNoch Mod 2 <> 0 then RazUtroRassvet:=RazUtroRassvet-1;
if RazNochUtro Mod 2 <> 0 then RazUtroRassvet:=RazUtroRassvet-1;
PerUtroRassvet:=RazUtroRassvet div 100;
PerObedPredzakat:=RazObedPredzakat div 100;
PerPredzakatVecher:=RazPredzakatVecher div 100;
PerVecherNoch:=RazVecherNoch div 100;
PerNochUtro:=RazNochUtro div 100;
BarUtroNow:=RazUtroNow div PerUtroRassvet;
BarObedNow:=RazObedNow div PerObedPredzakat;
BarPredzakatNow:=RazPredzakatNow div PerPredzakatVecher;
BarVecherNow:=RazVecherNow div PerVecherNoch;
BarNochNow:=RazNochNow div PerNochUtro;
ProgressBarUtro.Position:=ProgressBarUtro.Position+BarUtroNow;
ProgressBarObed.Position:=ProgressBarObed.Position+BarObedNow;
ProgressBarPredzakat.Position:=ProgressBarPredzakat.Position+BarPredzakatNow;
ProgressBarVecher.Position:=ProgressBarVecher.Position+BarVecherNow;
ProgressBarNoch.Position:=ProgressBarNoch.Position+BarNochNow;
if StrToTime(LabelUtro.Caption+':00') <= Time then TimerUtro.Enabled:=True;
if StrToTime(LabelObed.Caption+':00') <= Time then TimerObed.Enabled:=True;
if StrToTime(LabelPredzakat.Caption+':00') <= Time then TimerPredzakat.Enabled:=True;
if StrToTime(LabelVecher.Caption+':00') <= Time then TimerVecher.Enabled:=True;
if StrToTime(LabelNoch.Caption+':00') <= Time then TimerNoch.Enabled:=True;
TimerUtro.Interval:=TimerUtro.Interval*PerUtroRassvet;
TimerObed.Interval:=TimerObed.Interval*PerObedPredzakat;
TimerPredzakat.Interval:=TimerPredzakat.Interval*PerPredzakatVecher;
TimerVecher.Interval:=TimerVecher.Interval*PerVecherNoch;
TimerNoch.Interval:=TimerNoch.Interval*PerNochUtro;
end;
procedure TForm2.TimerUtroTimer(Sender: TObject);
begin
ProgressbarUtro.Position := ProgressbarUtro.Position + 1;
if ProgressbarUtro.Position = 100 then TimerUtro.Enabled := false;
end;
procedure TForm2.TimerObedTimer(Sender: TObject);
begin
ProgressbarObed.Position := ProgressbarObed.Position + 1;
if ProgressbarObed.Position = 100 then TimerObed.Enabled := false;
end;
procedure TForm2.TimerPredzakatTimer(Sender: TObject);
begin
ProgressbarPredzakat.Position := ProgressbarPredzakat.Position + 1;
if ProgressbarPredzakat.Position = 100 then TimerPredzakat.Enabled := false;
end;
procedure TForm2.TimerVecherTimer(Sender: TObject);
begin
ProgressbarVecher.Position := ProgressbarVecher.Position + 1;
if ProgressbarVecher.Position = 100 then TimerVecher.Enabled := false;
end;
procedure TForm2.TimerNochTimer(Sender: TObject);
begin
ProgressbarNoch.Position := ProgressbarNoch.Position + 1;
if ProgressbarNoch.Position = 100 then TimerNoch.Enabled := false;
end;
end.
|