![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
![]() Щас еще такая проблема ребята: создал я шесть лейблов со временем, первый утро, второй обед, третий предзакат, четвертый вечер, пятый ночь и шестой рассвет внизу окна и кинул на форму пять прогрессбаров. Первый прогрессбар отсчитывает время от первого лейбла с утренним временем до рассвета, второй от второго лейбла с обеденным временем и до времени третьего лейбла, с предзакатным временем, третий прогрессбар время от третьего лейбла с предзакатным временем и до четвертого лейбла с вечерним временем, четвертый прогрессбар время от четвертого лейбла с вечерним временем до пятого лейбла с ночным временем, и пятый прогрессбар время от пятого лейбла с ночным временем и до времени первого лейбла с утренним временем.
А теперь у меня вопрос, почему при запуске программы у меня запускаются все прогрессбары, мой код см. ниже Код:
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. |
#17
|
||||
|
||||
![]() Попробуй запускать прогресбар, только после того, как предыдущий дойдет до 100%
|
#18
|
|||
|
|||
![]() Цитата:
|
#19
|
||||
|
||||
![]() Перечитывал трижды. Пиши менее сумбурно, а?
Попробуй делать проверку в том же событии, в котором ты изменяешь процент заполнения прогрессбара. И на всякий случай делай не =100%, а >=100%. Если я конечно правильно понял твой вопрос. Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! |
#20
|
|||
|
|||
![]() Цитата:
|
#21
|
||||
|
||||
![]() Ну, значит, я правильно понял твой вопрос.
Или мой вариант не работает? Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! |
#22
|
|||
|
|||
![]() Цитата:
|
#23
|
||||
|
||||
![]() 0_0
У тебя в кокой процедуре происходит заполнение прогресс бара? Вот в неё и пихаешь! Без всяких While..do, простым If..then лустничного вида! В коде я с поллитрой не разберусь, так что просто инфу давай. Если не ты, то кто? (с) Терри Пратчетт Не забывайте ставить плюсы и говорить спасибо! |
#24
|
|||
|
|||
![]() Вот сделал как ты сказал, но все равно та же история, при запущенной программе следующий прогрессбар не запускается, до тех пор пока не перезапустишь программу
Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, ExtCtrls, jpeg; 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) <= Time then TimerUtro.Enabled:=True; if StrToTime(LabelObed.Caption) <= Time then TimerObed.Enabled:=True; if StrToTime(LabelPredzakat.Caption) <= Time then TimerPredzakat.Enabled:=True; if StrToTime(LabelVecher.Caption) <= Time then TimerVecher.Enabled:=True; if StrToTime(LabelNoch.Caption) <= 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 begin TimerUtro.Enabled := false; if Time=StrToTime(LabelObed.Caption) then TimerObed.Enabled:=True; end; end; procedure TForm2.TimerObedTimer(Sender: TObject); begin ProgressbarObed.Position := ProgressbarObed.Position + 1; if ProgressbarObed.Position = 100 then begin TimerObed.Enabled := False; TimerPredzakat.Enabled:=True end; end; procedure TForm2.TimerPredzakatTimer(Sender: TObject); begin ProgressbarPredzakat.Position := ProgressbarPredzakat.Position + 1; if ProgressbarPredzakat.Position = 100 then begin TimerPredzakat.Enabled := false; TimerVecher.Enabled:=True end; end; procedure TForm2.TimerVecherTimer(Sender: TObject); begin ProgressbarVecher.Position := ProgressbarVecher.Position + 1; if ProgressbarVecher.Position = 100 then begin TimerVecher.Enabled := false; TimerNoch.Enabled:=True end; end; procedure TForm2.TimerNochTimer(Sender: TObject); begin ProgressbarNoch.Position := ProgressbarNoch.Position + 1; if ProgressbarNoch.Position = 100 then begin TimerNoch.Enabled := false; TimerUtro.Enabled:=True end; end; end. |