Текущий архив: 2004.09.26;
Скачать: CL | DM;
Внизпауза Найти похожие ветки
← →
redlord (2004-09-10 18:51) [0]привет всем
как зделать паузу в выполнении проги и можноли ее потом отменить до истечения установленного времени
← →
Суслик © (2004-09-10 18:55) [1]для начала надо определиться со следующими аспектами:
1) что есть прога? Т.е. в чем должна выражаться пауза? В том, что интерфейс перестал реагировать на пользователя?
2) Кто выполняет отмену? Другой поток? Пользователь? Другой процесс?
Определитесь с задачей.
Тогда можно дать конкретный ответ.
← →
Луарвик (2004-09-10 18:58) [2]sleep(1000) секндная пауза в работе процедуры...
← →
Суслик © (2004-09-10 19:02) [3]
> sleep(1000) секндная пауза в работе процедуры...
и вы знаете как ее прервать?
← →
МЯУ (2004-09-10 22:13) [4]есть какой-то SleepEx, ему можно передавать параметр bAlertable: LongBool. Наверно этот слип можно прервать откуда-нить. Но в хелпе про него ничё не написано (у миня по крайней мере)
← →
Vit@ly © (2004-09-10 22:21) [5]Попробуй создать бесконечный цикл типа
Repeat
Application.ProcessMessa..
// а здесь обработка нажатия чего-либо
// или в другом месте
Until True;
← →
Anatoly Podgoretsky © (2004-09-10 22:54) [6]Разбивай паузу на микропаузы.
← →
KADAN © (2004-09-10 23:05) [7]
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 и не нужна вовсе (можно заменить на "not timer1.enabled")... но это для наглядности.
Страницы: 1 вся ветка
Текущий архив: 2004.09.26;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.034 c