Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Форма зависает помгите!  (Прочитано 12624 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Сергей73
Гость
« : 17-03-2006 04:37 » 

Привет. Во время изменения значений LABEL или Progressbar в цикле форма зависает до конца выхода из обработчика событий bottom. И еще если в конце стоит form.hide то форма не скрывается приходтся нажимать на кнопку закрытия формы. все вичисления она делает как надо, но не видно во время работы. Причем зависание происходит не всегда.  подскажите как избавится от такой проблемы? 
Пробовал с разными значениями autoRedraw не помогает.
У меня уже второй комп и windows но проблема таже.
Записан
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 17-03-2006 05:42 » 

Немного сумбурно объясняешь...
Во первых. На чем программируешь? т.к. раздел общий трудно понять на каком языке (IDE) программа.
Привет. Во время изменения значений LABEL или Progressbar в цикле форма зависает до конца выхода из обработчика событий bottom.
Если это Delphi, добавь в цикл Application.ProcessMessages; это даст возможность форме обновиться.

Во вторых причем здесь Windows?
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #2 : 17-03-2006 06:52 » 

во-первых, отредактируй свой пост и убери опрос.

во-вторых, по теме: если у тебя используется цикл, то в это время твоя программа не обрабатывает никаких сообщений, в том числе и на перерисовку лэйбла и на "прятание" формы. Как сказал RomCom: ProcessMessages дас твоем программе обработать сообщения которые есть в очереди. Как вариант для цикла можно использовать отдельную нить (thread)
Записан

Удачного всем кодинга! -=x[PooH]x=-
Сергей73
Гость
« Ответ #3 : 17-03-2006 09:01 » 

Я програмирую на Visual Basic 6.0
короче объясню на простом примере:
есть форма в которой одна кнопка, label и progressbar
нажимая кнопу запускается цыкл и выводится в label числа
1 2 3 ...... и так до 100000.
цифры появляютя и меняются как надо но где то на середине перебора форма зависает и в конце работы цыкла  выводит 100000.
причем если после цикла ставлю form.hide форма остается на экране.
попробовал не выводить в label а только использовать  progressbar как пологается с progressbar.Refresh
работает так же.
причем зависает не всегда то есть доробатывает до конца.

у меня есть предположение зависания связаны с движением мыши потому что  иногда двинешь мышью и зависает.
Записан
PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #4 : 17-03-2006 09:16 » 

вот здесь http://www.codeproject.com/dotnet/VB6andVBNETWindowMessages.asp посмотри, может найдешь что-нить полезное.
« Последнее редактирование: 17-03-2006 09:17 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 17-03-2006 11:42 » 

Я програмирую на Visual Basic 6.0
С этого и надо было начинать Улыбаюсь
в VB давно не програмил но в VBA есть функция DoEvents() (аналог ProcessMessages в Delphi).
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
Сергей73
Гость
« Ответ #6 : 17-03-2006 12:19 » new

Вроде помогло.
Спасибо большое!!!!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines