Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2010, 17:24   #1
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию Как прервать выполнение операции?

Есть форма Form1, на ней кнопочка Button1 с выполнением операции, продолжительной... подскажите, как правильно писать форму, чтобы можно было прервать операция к примеру кнопкой Cancel?
Нужно писать обработчик в другой форме? Может нужно отдельный Unit или для этого нужно создавать DLL?

Заранее благодарен... Денис.
iskurt вне форума Ответить с цитированием
Старый 29.03.2010, 17:34   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Здесь либо в цикле этой самой операции делать проверку или использовать потоки.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 29.03.2010, 17:41   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от iskurt Посмотреть сообщение
Есть форма Form1, на ней кнопочка Button1 с выполнением операции, продолжительной... подскажите, как правильно писать форму, чтобы можно было прервать операция к примеру кнопкой Cancel?
Нужно писать обработчик в другой форме? Может нужно отдельный Unit или для этого нужно создавать DLL?

Заранее благодарен... Денис.
ИМХО... Лично я делал так в своих программах, см. рисунок.
Добавлял в панель инструментов две кнопочки "Пауза" и "Стоп" (по желанию заказчика).
А в теле процедур ловил флаги от нажатия этих кнопок, вот пример кода
Код:
                  while flgPause do
                    begin
                      Sleep(1000);//пауза в выполнении...
                      Application.ProcessMessages
                    end;
                  if flgStop then
                    begin
                      Stoping;
                      Exit
                    end;
Stoping - процедура обработки прекращения некоторых действий программы...

Untitled2.jpg
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 29.03.2010 в 17:44.
Grag вне форума Ответить с цитированием
Старый 29.03.2010, 17:54   #4
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

вроде идеи неплохие, но вот проблема, когда выполняется операция, вообще никакие кнопки не активны, полностью приложение подвисает.... типа "Программа не отвечает"
iskurt вне форума Ответить с цитированием
Старый 29.03.2010, 17:56   #5
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

вобщем, спрошу по другому.... можно ли перенести процедурку в "другой" (файл, модуль...) чтобы потом его прервать?
iskurt вне форума Ответить с цитированием
Старый 29.03.2010, 18:00   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от iskurt Посмотреть сообщение
вроде идеи неплохие, но вот проблема, когда выполняется операция, вообще никакие кнопки не активны, полностью приложение подвисает.... типа "Программа не отвечает"
Для этого есть Application.ProcessMessages
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 29.03.2010, 18:30   #7
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

ВО! это уже что-то.... теперь мне просто в процедуре нужно поставить проверку флага типа "отмена"? я так понял?
iskurt вне форума Ответить с цитированием
Старый 29.03.2010, 18:35   #8
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

Цитата:
Сообщение от Grag Посмотреть сообщение
Для этого есть Application.ProcessMessages
СУПЕР - ПОЛУЧИЛОСЬ ТАК КАК ХОТЕЛ!!!!
iskurt вне форума Ответить с цитированием
Старый 29.03.2010, 18:43   #9
iskurt
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 228
По умолчанию

мда..... только процедура стала полным тормозом.....
Ребята, а что там на счет потоков....?
iskurt вне форума Ответить с цитированием
Старый 29.03.2010, 18:46   #10
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

http://www.delphikingdom.com/asp/vie...catalogid=1370
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прервать выполнение функции? Как? TwiX Общие вопросы Delphi 9 28.09.2009 16:36
Как прервать внешний цикл? AndreyF Общие вопросы Delphi 15 15.06.2009 17:46
delphi 7, как прервать выполнение программы Altera Софт 3 27.07.2008 15:14
Как зделать авто выполнение Editor Общие вопросы Delphi 5 27.04.2008 21:01
Как ускорить выполнение макросов tat-besidovska Microsoft Office Excel 1 22.01.2008 12:12