![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Serhik_z |
|
|||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 108 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Как остановить цикл по нажатии кнопки button (новая кнопка), Можно и ту которая запускает цикл, или от клавиши #32 пробел
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 4 Всего: 110 |
если при вычислениях хочется реагировать на какие-то события, есть два выхода:
1. время от времени вызывать обработку событий из этого страшного цикла (если я не ошибаюсь, Application.ProcessMessages) 2. запустить цикл в отдельном потоке в обоих вариантах лучше оформить вычислительную процедуру в виде отдельной функции (во втором - не лучше, а обязательно (1) при нажатии на кнопку изменять значение какого-нибдуь флажка, после обработки сообщений проверять этот флажок, если true, то exit (2) при нажатии на кнопку просто убивать поток (так просто может не получиться: возможно, будут заморочки с доступом к Memo) -------------------- qqq |
|||
|
||||
| Tsume |
|
|||
|
Unregistered |
Переменная булева, отвечающая за то, нажата или нет кнопка. В цикле Application.ProcessMessages, чтобы нажатие на кнопке отработалось и if твоя переменная then Break (или exit, по смылу и вкусу). На обработчике нажатия кнопки выставляешь свою переменную. Перед цикло обнуляешь ее. И ВСЕ!
|
|||
|
||||
| Serhik_z |
|
|||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 108 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
Можно по подробней и с примером.
|
|||
|
||||
| Bes |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 806 Регистрация: 8.12.2004 Репутация: 5 Всего: 7 |
Сделать репитом и в условии выхода проверять переменную, которая устанавливается по нажатию клавиши.
|
|||
|
||||
| Serhik_z |
|
|||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 108 Регистрация: 4.12.2004 Репутация: нет Всего: нет |
|
|||
|
||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: 6 Всего: 11 |
например делаеш глобальную переменную
var b: boolean; по нажатию кнопки b:=true; в цикле пишеш if b then begin b:=false; exit; end; ток вот ты кнопочку нажать-то не сможеш поставь ещё application.ProcessMessages; в цикле а ещё лучше в отдельном потоке этот цикл сделай) Это сообщение отредактировал(а) FRAGNATIC - 3.3.2005, 23:24 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |