Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как прервать цикл кнопкой на форме?


Автор: San4o_Pan4o 25.3.2009, 10:40
Всем здрасьте! Есть прога по вычислительным методам, решает систему + одновременно рисует график погрешности. Все это происходит в внутри большого цикла while(). Цикл может тянутся долго, и хочется иметь возможность его остановить в любой момент, типа кликнул кнопочку и оно стопанулось. Как можно сделать, подскажите плиз. И, если можно, с кодом..

Автор: Frees 25.3.2009, 11:03
Application.ProcessMessage;

и флаг для прекращения цикла

Автор: vladimir74 25.3.2009, 11:18
Код

while.....
   ........
   ........
   Application.ProcessMessages;
end:

procedure TForm1.ButtonClick(Sender: TObject);
begin
// условие окончания цикла
end;

Автор: Sanek123 25.3.2009, 11:41
По моему можно воспользоваться кострукцией repeat ... until
типа:

Repeat
...
цикл
...
until button.click;

цикл будет при выполнении нового круга проверять не была ли нажата кнопка стопа.

Автор: Frees 25.3.2009, 11:44
Repeat
...
цикл//во тут у тебя прога зависнет и не сможеш ты ничего нажать
...
until button.click;

Автор: THandle 25.3.2009, 16:48
Никаких флагов, никаких циклов, использовать следует потоки.

http://forum.vingrad.ru/index.php?showtopic=243846&view=findpost&p=1757937
http://forum.vingrad.ru/forum/topic-220051/hl/%25D0%25BF%25D0%25BE%25D1%2582%25D0%25BE%25D0%25BA/index.html

Автор: San4o_Pan4o 26.3.2009, 07:21
всем спасибо, ProcessMessages помоглоsmile
тему можно прикрыть)

Автор: Frees 26.3.2009, 07:30
Цитата(San4o_Pan4o @  26.3.2009,  09:21 Найти цитируемый пост)
всем спасибо, ProcessMessages помоглоsmile

это решение для начинающих, не совсем удобное, например попробуй закрыть приложение когда выполняется цикл.

если хочеш сделать все правельно кури TThread и слушай THandle, 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)