Я предполагаю, что TopFormmlcmpStatusPanel1
имеет тип TStatusBar
.
Вы не отправляете WM_PAINT
или WM_ERASEBKGND
сообщений. Система делает это.
Ваш код:
TopFormmlcmpStatusPanel1.Invalidate;
приведет к новому циклу краски. Когда цикл сообщения будет опущен, будет создан цикл рисования, и элемент управления будет перекрашен.
В качестве альтернативы можно использовать:
TopFormmlcmpStatusPanel1.Refresh;
, если вы хотите, чтобы контроль быть повторно окрашены сразу.
Итак, я думаю, ваша проблема более тонкая, чем вы думаете. Мое ожидание состоит в том, что ваши элементы управления рисуются системой, используя системную тему. И ваши попытки изменить цвет просто не могут иметь никакого эффекта, потому что тема переопределяет цветовые свойства элемента управления. Без SSCCE трудно быть уверенным, что это проблема.
В комментариях указано, что ваш элемент управления является владельцем. Вполне возможно, что код вашего владельца рисует ошибку. Я явно не могу прокомментировать этот код, который я не могу наблюдать. Тем не менее, я бы переформулировал тот факт, что методы Invalidate
и Refresh
приведут к циферблату краски.
Строка состояния была произведена путем жеребьевки владельца. –
Я также попытался сделать Invalidate и обновить, и ни одна команда не работала. –
Как Invalidate, так и Refresh будут приводить к циклам рисования. Возможно, у вашего владельца кода есть ошибка. Вы не представили SSCCE. Кроме того, какой тип TopFormmlcmpStatusPanel1? Я предположил, что это TStatusBar. Это верно? –