Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Исчезает надпись. [D5, Win2k]


Jony ©   (2002-12-13 10:46:00) 

Мастера! Объясните, пожалуйста, в чем дело?
Ставлю на форму панель, на которую помещаю ProgressBar и Label с соотведствующей предупреждающей надписью о прохождении процесса. У панели visual = false. В нужный момент делаю ее видимой. В зависимости от определенных условий на форме после появления панели может появиться еще и MessageDlg. И вот какая получается лажа. Если MessageDlg не появляется - не появляется и надпись на Label (причем, даже если должен, а я его просто глушил). Пробовал и язык менять, и вместо панели GroupBox с соответствующим заголовком (текстом с Label) ставить. Эффект тот-же. Где собака порылась?


Matolch   (2002-12-13 11:10:00) [1]

Для того, чтоб обеспечить перерисовку формы и/или обработку других сообщений вiндовс, след использовать метод Update или Application.ProcessMessages. При вызове MessageDlg приложением было получено сообщение WM_PAINT, на что форма и ответила, показав панель и проч.
Что кас. Application.ProcessMessages:
бывают очень неудачные прменения, например, когда пользователь ещё раз кликнет на кнопке вызова процесса. В этом случае надо Button.Enabled := false после входа в цикл.
Update - просто перерисовка.
В общем, если нет нужды перерисовывать форму постоянно, можно вызвать метод Update сразу после того, как показал панель, так и цикл быстрее выполняться будет.


Jony   (2002-12-13 11:01:00) [2]

Спасибо большое, помогло! Правда поставил я его спазу после визуализации панели.


Song   (2002-12-13 10:50:00) [3]

Собака порылась в Application.ProceeMessages
Поставь её внутрь цикла где у тебя просходят события, приводящие к изменению TProgressBar.Progress


Наверх

Титульная страница Поиск, карта сайта Написать письмо