![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Остановка цикла [D5, Win95/98]
User_OKA © (2002-10-10 07:25:00)Здравствуйте мастера!!!
Есть программа с циклом. Необходимо приостановить его выполнение, для того, чтобы посмотреть данные на форме.
А затем, например по клавише Enter продолжить его выполнение.
User_OKA (2002-10-10 13:22:00) [1]Надеюсь нет!!!
REA (2002-10-10 10:16:00) [2]Сначала скажи зачем это? Надеюсь не для отладки?
User_OKA (2002-10-10 10:01:00) [3]Спасибо мвстера!!!
KSergey (2002-10-10 08:13:00) [4]> Viktor Kushnir © (10.10.02 07:43)
Только для того, чтобы этот обработчик срабатывал, необходимо так же и в самом цикле вставлять Application.Processmessages, либо использовать ф-цию PeekMessage (что-то такое)
Anatoly Podgoretsky (2002-10-10 07:58:00) [5]Ты бы написал критерий остановки, значение, событие или как.
В принципе тебе уже ответили, только я бы структурно изменил это, на основе Viktor Kushnir © (10.10.02 07:43)
for i:= 0 to do begin
...
Application.Processmessages;
if Criteria then View // процедура (форма) просмотра
...
End;
Viktor Kushnir (2002-10-10 07:43:00) [6]Способ кривоват, но все же...
Сделай внутри главного цикла еще один.
Типа:
Var
Pause :Boolean = false; //глобальная
For i:= 0 to do //это твой главный цикл
begin
While Pause do // это цикл паузы
Begin
//сюда можно что-нить написать, типа
Application.Processmessages;
End;
End;
И где-нить в обработчеке кнопки "Пауза/Продолжить"
напиши такое
Pause := not pause;
MBo (2002-10-10 07:38:00) [7]1 путь - в процедуру с циклом передаешь начальное значение счетчика (или глоб. переменная), в ней проверяешь Application.processmessages и по некому флагу выходишь, затем снова запускаешь ее с места остановки
2 - выносишь в отдельный поток, suspend/resume