![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать прерывание цикла в программе при нажатии на кнопку?
JIuradfsd © (2005-08-01 15:59:00)Есть цикл вида Repeat...Until;
НА форме есть кнопка - прекратить расчет. ПРи нажатию на нее программа должна выйти из цикла.
Сейчас написанно следующее:
Button1:
PrekrRach:=true;
В Цикле:
..
Until PrekrRach=true;
Но во время выполнения кода я не могу кликнуть на кнопку....
Помниться я уже про это спрашивал мне посоветоваали добавить в код строчку:
Application.ProcessMessages;
и что-то еще.... вот что еще?
JIuradfsd (2005-08-01 17:13:00) [1]Благодарю!
Просчто в конце сообщения Ega23был поставлен знак вопроса. А подумал что человвек не понял вопроса
surkis (2005-08-01 16:55:00) [2]создаёшь новый TTread на Execute ставишь свой обработчик и он будет обрабатываться паралельно с форменым потоком так что кнопка будет нажиматься а по клику выход из Tread
Юрий Зотов (2005-08-01 16:51:00) [3]> JIuradfsd (01.08.05 16:44) [5]
Вам ответили сразу же (см. [1]). Неплохо бы быть внимательнее.
Lexer (2005-08-01 16:48:00) [4]> JIuradfsd (01.08.05 16:44) [5]
см. [1] Ega23 © (01.08.05 16:00)
а при нажатии на кнопку меняешь значение переменной PrekrRach
JIuradfsd (2005-08-01 16:44:00) [5]Помоему я хреново обьяснил что никто не понял.
Для выхода из цикла необходимо выполнение условия:
Until PrekrRach=true
.....
НО !!!! НЕОБХОДИМО КАК ТО ПРИСВОИТЬ переменной PrekrRach значение true. ПРисвыоение же идет при наждатии на кнопку:
procedure Tfrmmain.CmdStopRachClick(Sender: TObject);
begin
StopRach:=true;
end;
НО ПРОБЛЕМА В ТОМ что при запуске программы происходит нерперывное выполнение цикла, и как следствие, на кнопку я нажать просто физически не могу - приложение как бы подвисает. Так вот что сделать, чтобы я нажать мог?
begin...end (2005-08-01 16:36:00) [6]> JIuradfsd (01.08.05 15:59)
> Until PrekrRach=true
Это чревато плохими последствиями. Пишите просто Until PrekrRach.
Fay (2005-08-01 16:04:00) [7]... ещё условие выхода из цикла, блин!
isasa (2005-08-01 16:03:00) [8]repeat
...
until...
в отдельном треде, тогда кнопку нажмешь.
Ega23 (2005-08-01 16:00:00) [9]Перед Until - Application.ProcessMessages ?