|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Не закрывается форма Добрый день! Есть программа, которая запускает по Speedbutton. Когда она выполняется, я нажимаю на крестик формы, но форма закрывается только, когда программа полностью отработает. Почему? И как сделать, чтобы она прерывалась? (Каждый раз делать проверки на Close мне кажется не правильно) Код: 
 Последний раз редактировалось Admin, 06.05.2015 в 19:28. | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 Цитата: 
 Например так Код: 
 | 
| Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
|  
shtrih (12.05.2015)
 | ||
| 
			 
			#3  
			
			
			
			
		 | ||||
| 
 | ||||
|   Наверное лучше делать так, хотя общий смысл данного действа остался не понятен Код: 
 | 
| Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
|  
shtrih (12.05.2015)
 | ||
| 
			 
			#4  
			
			
			
			
		 | |||
| 
 | |||
|   Наверно у человека вместо многоточий какие-то полезные вычисления делаются. И каждый раз разные. Но - автора - в студию! | 
| 
			 
			#5  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 | 
| 
			 
			#6  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 | 
| 
			 
			#7  
			
			
			
			
		 | |||
| 
 | |||
|   Кроме того, Вы даже кнопку нажать не сможете. Ведь цикл обработки происходит так: 1) ждётся появление очередного сообщения Windows,(например нажатия SpeedButton1) 2) если есть сообщение, Выбрать его из очереди и 3) обработать.Например запустить SpeedButton1Click) 4) после обработки сообщения 5) Перейти к пункту 1) То есть если во время выполнения длительной процедуры будете нажимать какие-нибудь кнопки на форме, их обработчики будут вызваны только после того, как эта процедура закончится. Для того, что бы не "замораживать" интерфейс намертво, можно внутри этой длинной процедуры вызывать Application.ProcessMessages(); которая содержит внутри себя собственный цикл обработки сообщений. [Щас закидают тухлыми помидорами  ] По этому более точный код должен быть таким Код: 
 |