Отображение текста в StatusBar
Изменяю в цикле текст в панели статусбара, а он "мигает", как от этого избавиться?
Application->ProcessMessages();
StatusBar->Panels->Items[1]->Text = "Считывается запись " + IntToStr(j) + " из 15000";
}
Добрый день!
Изменяю в цикле текст в панели статусбара, а он "мигает", как от этого избавиться?
Application->ProcessMessages();
StatusBar->Panels->Items[1]->Text = "Считывается запись " + IntToStr(j) + " из 15000";
}
Я думаю никак.
Изменяю в цикле текст в панели статусбара, а он "мигает", как от этого избавиться?
Немного теории. Вывод на экран и другие операции, прямо или косвенно связанные с пользователем - обычно самые медленные в программе. В данном случае прорисовка будет очень сильно тормозить основную работу программы. При скоростях современных процессоров, даже усредненных у усредненного пользователя, перерисовка экрана на каждом шаге цикла - непозволительное расточительство. Чаще бывает проще вообще ничего не говорить о конкретном шаге - просто вывестить песочные часы на краткое время - оно будет действительно кратким.
Если же операция продолжительна вне зависимости от привязки к интерфейсу, можно попробовать использовать TProgressBar с отключенным свойством Smooth (как у него по умолчанию). Это тоже неспроста сделано - ступенчатое изменение полосы позволяет системе перерисовывать ее не каждый раз при изменении текущего значения, а более крупными шагами.
Если с ProgressBar-ом возиться неохота, можно попробовать взять на вооружение его способ и рисовать свое сообщение на каждый 10-1 или даже 100-й шаг цикла. Или на 128-й, например. ;)