![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Может кто подскажет как произвести обратный отсчет времени [D7, WinXP]
Сергей И © (2006-04-20 10:58:00)Мне необходимо решить следующую зададу:
вводится время обратного отсчета и при его истечении выполняется задуманное действие
Alarm (2006-04-21 14:51:00) [1]>Anatoly Podgoretsky © (21.04.06 14:45) [9]
Спасибо что ответили сами. Мне было как-то не корректно (удобно) приводить Ваше решение
Anatoly Podgoretsky (2006-04-21 14:45:00) [2]EndTime - Now
И далее любое форматирование.
EndTime время окончания отчета, равное время Now + интервал.
unknown (2006-04-21 14:32:00) [3]Вот так :
var
TimeCounter:TDateTime;
....
TimeCounter:=now;
...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
...
Caption:=FormatDateTime('hh:mm:ss:ms',Now-TimeCounter);
...
end;
inri13666 (2006-04-21 14:24:00) [4]в смысле ты что именно имешь в виду напиши плиз по конкретней :)
Alarm (2006-04-21 14:22:00) [5]Не хотел "высовываться", но у APP очень давно (ну года примерно 3 или более назад) был отличный ответ на этот вопрос. У меня в проектах было другое решение, но его предложением, типа минус Now я был восхищен!!!
Anatoly Podgoretsky (2006-04-21 14:15:00) [6]Таймер конечно, но только не sec:=sec-1;, а NOW
inri13666 (2006-04-21 14:05:00) [7]вот листинг проги может поймёш
там вообщем количество оставшихся секунд отображается в заголовке окна
а по истечению времени выводиться окно:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
sec:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
sec:=strtoint(edit1.text);
timer1.Enabled:=true ;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if timer1.Enabled=true
then timer1.Enabled:=false;
timer1.interval:=1000 //что равно одной секунде
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled:=false;
if sec=0
then
begin
showmessage('Интервал истёк')
end
Else
begin
sec:=sec-1;
timer1.Enabled:=True;
caption:=inttostr(sec);
end;
end;
end.
GOOD Luck :)
Chlavik (2006-04-21 13:31:00) [8]по таймеру декриментируеш переменную time--; ой dec(time, Timer1.interval );
Megabyte (2006-04-20 13:11:00) [9]Юзай таймер. А если надо отображать обратный отчет - это ж не сложно.
MBo (2006-04-20 11:01:00) [10]TTimer пробовал использовать?