![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
пауза [D7, WinXP]
redlord © (2004-09-10 18:51:00)привет всем
как зделать паузу в выполнении проги и можноли ее потом отменить до истечения установленного времени
KADAN (2004-09-10 23:05:00) [1]
procedure TForm1.btnSetpauseClick(Sender: TObject);
begin // код паузы
timer1.Enabled:=true;
caption:='paused';
while not cancel do begin
sleep(100);
application.ProcessMessages; // это для реагирования на сообщения (чтоб окошко возилось и кнопки нажимались)
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin // эта процедурка вызывается таймером и кнопкой отмены паузы
Timer1.Enabled:=false;
cancel:=true;
caption:='unpaused';
end;
хотя вполне может быть я перемудрил, переменная Cancel и не нужна вовсе (можно заменить на " nottimer1.enabled")... но это для наглядности.
Anatoly Podgoretsky (2004-09-10 22:54:00) [2]Разбивай паузу на микропаузы.
Vit@ly (2004-09-10 22:21:00) [3]Попробуй создать бесконечный цикл типа
Repeat
Application.ProcessMessa..
// а здесь обработка нажатия чего-либо
// или в другом месте
Until True;
МЯУ (2004-09-10 22:13:00) [4]есть какой-то SleepEx, ему можно передавать параметр bAlertable: LongBool. Наверно этот слип можно прервать откуда-нить. Но в хелпе про него ничё не написано (у миня по крайней мере)
Суслик (2004-09-10 19:02:00) [5]
> sleep(1000) секндная пауза в работе процедуры...
и вы знаете как ее прервать?
Луарвик (2004-09-10 18:58:00) [6]sleep(1000) секндная пауза в работе процедуры...
Суслик (2004-09-10 18:55:00) [7]для начала надо определиться со следующими аспектами:
1) что есть прога? Т.е. в чем должна выражаться пауза? В том, что интерфейс перестал реагировать на пользователя?
2) Кто выполняет отмену? Другой поток? Пользователь? Другой процесс?
Определитесь с задачей.
Тогда можно дать конкретный ответ.