![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Таймер. [D7, Win95/98, WinME, NT4, Win2k, WinXP]
niko4543 © (2004-06-25 14:15:00)Здравствуйте.
Помогите пожайлуста, мне нужен код такого рода.
Нужно с помощью таймера засечь на, ну скажем примерно 15 или 30 минут, и что бы пока течёт это время через каждые 30 сикунд делать какоето джействие.
Помогите пожайлуста срочно надо. Вроде просто а у меня работает очень глючно.
Заранее спасибо.
KilkennyCat (2004-06-26 11:19:00) [1]что касается точности - этот таймер сам по себе неточен
KilkennyCat (2004-06-26 11:08:00) [2]и кстати, почему
Gauge1.MaxValue:=Time*600?
может быть так вернее
Gauge1.MaxValue:=Time*60?
тогда все проще:
begin
Gauge1.Progress := Gauge1.Progress + 1;
Label1.Caption:=IntToStr(trunc(Gauge1.Progress/60)+':'+IntToStr(Gauge1.Progress - (trunc(Gauge1.Progress/60))*60);
If Gauge1.Progress = Gauge1.Max Then begin
ShowMessage('Отведённое время вышло');
Timer1.Enabled:=False;
end;
end;
KilkennyCat (2004-06-26 10:49:00) [3]Правильно кажется...
Зачем это -
var?
k:integer;
k1:real;
можно ведь так:
Gauge1.Progress:=round(((((minuta*60)+secunda))*100)/Time);
зачем внутри таймера это -
Label2.Caption:=inttostr(time);, если Time не меняется? вынести за пределы обработчика таймера...
Gauge1.MaxValue:=Time*600;
Получаем пока такое :
begin
secunda:=secunda+1;
Gauge1.Progress:=round(((((minuta*60)+secunda))*100)/Time);
If secunda=60 Then begin
secunda:=0;
minuta:=minuta+1;
end;
Label1.Caption:=IntToStr(minuta)+':'+IntToStr(secunda);
If Time<=minuta Then begin
ShowMessage('Отведённое время вышло');
Timer1.Enabled:=False;
end;
end;
niko4543 (2004-06-26 06:56:00) [4]Я делаю так.
var
k:integer;
k1:real;
begin
Label2.Caption:=inttostr(time);
secunda:=secunda+1;
k1:=((((minuta*60)+secunda))*100)/Time;
k:=round(k1);
Gauge1.MaxValue:=Time*600;
Gauge1.Progress:=k;
If secunda=60 Then
begin
secunda:=0;
minuta:=minuta+1;
end;
Label1.Caption:=IntToStr(minuta)+':'+IntToStr(secunda);
If Time<=minuta Then
begin
ShowMessage('Отведённое время вышло');
Timer1.Enabled:=False;
end;
end;
Мне кажется это такя полная лажа, и работает неочень точно. Подскажите правельную реализацию этого вопроса.
nejest (2004-06-25 16:22:00) [5]procedure TForm1.Timer1Timer(Sender: TObject);
begin
if(i=30)then
begin
label1.Caption:='Время закончилось';
Timer1.Enabled:=False;
end
else
begin
label1.Caption:='Прошло '+IntToStr(i*30)+' секунд';
i:=i+1;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
end;
У меня всё работает.
Anatoly Podgoretsky (2004-06-25 15:25:00) [6]GuAV © (25.06.04 15:20) [9]
Флудить и флеймить не надо, просто пока ждем можно и поговорить.
GuAV (2004-06-25 15:20:00) [7]
> Ой, немного поторопился ;)
Опять торопишься. "Не суетись под клиентом" (с)
И вообще: Нефиг отвечать. Пока авторской версии не будет можно только флудить и флеймить :)
Delphin (2004-06-25 15:08:00) [8]Ой, немного поторопился ;)
procedure TForm1.Timer1Timer(Sender: TObject);
begin
IF Timer2.Enabled Then
ShowMessage('30 Seconds left');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=30000; // 30 Sec.
Timer2.Interval:=1000*30*60 //30 Min.
end;
end.
GuAV (2004-06-25 15:05:00) [9]Delphin © (25.06.04 15:02) [6]
Оффтоп. См. внимательно сабж. См. также [4]-[5].
Delphin (2004-06-25 15:02:00) [10]procedure TForm1.Timer1Timer(Sender: TObject);
begin
ShowMessage('30 Seconds left');
Timer1.Enabled:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=30000;
end;
Что-нить вроде этого ?
Anatoly Podgoretsky (2004-06-25 14:32:00) [11]Может и похуже, например на ЛМД
Тимохов (2004-06-25 14:22:00) [12]или на обвинения в плагиате нарвемся
Anatoly Podgoretsky (2004-06-25 14:21:00) [13]Нет сначала твой код, а то вдруг сдублируем, будем виноваты не заслуженно.
lion (2004-06-25 14:20:00) [14]сделай два таймера: один будет вырубать второй через 30 минут.
а первый через каждые 30 секунд будет делать то что надо
Тимохов (2004-06-25 14:16:00) [15]
> Вроде просто а у меня работает очень глючно.
что то уже есть?
выкладывай