Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
ВнизИсчезает надпись. Найти похожие ветки
← →
Jony (2002-12-13 10:46) [0]Мастера! Объясните, пожалуйста, в чем дело?
Ставлю на форму панель, на которую помещаю ProgressBar и Label с соотведствующей предупреждающей надписью о прохождении процесса. У панели visual = false. В нужный момент делаю ее видимой. В зависимости от определенных условий на форме после появления панели может появиться еще и MessageDlg. И вот какая получается лажа. Если MessageDlg не появляется - не появляется и надпись на Label (причем, даже если должен, а я его просто глушил). Пробовал и язык менять, и вместо панели GroupBox с соответствующим заголовком (текстом с Label) ставить. Эффект тот-же. Где собака порылась?
← →
Song (2002-12-13 10:50) [1]Собака порылась в Application.ProceeMessages
Поставь её внутрь цикла где у тебя просходят события, приводящие к изменению TProgressBar.Progress
← →
Jony (2002-12-13 11:01) [2]Спасибо большое, помогло! Правда поставил я его спазу после визуализации панели.
← →
Matolch (2002-12-13 11:10) [3]Для того, чтоб обеспечить перерисовку формы и/или обработку других сообщений вiндовс, след использовать метод Update или Application.ProcessMessages. При вызове MessageDlg приложением было получено сообщение WM_PAINT, на что форма и ответила, показав панель и проч.
Что кас. Application.ProcessMessages:
бывают очень неудачные прменения, например, когда пользователь ещё раз кликнет на кнопке вызова процесса. В этом случае надо Button.Enabled := false после входа в цикл.
Update - просто перерисовка.
В общем, если нет нужды перерисовывать форму постоянно, можно вызвать метод Update сразу после того, как показал панель, так и цикл быстрее выполняться будет.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c