![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исчезает надпись. [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