сообщения не могут быть обработаны до вашего приложения повторно входит в цикл обработки сообщений, так что любая попытка изменить состояние/управления обновлением, которое опирается на обработку сообщений не будет работать в пределах одной последовательности кода, который не сообщения «насос».
К счастью VCL контролирует, как правило, обеспечивает средства для силы Перекрашивания, не дожидаясь сообщения, подлежащая обработке, с помощью метода Update:
Button1.Enabled := False;
Button2.Enabled := False;
Button1.Update;
Button2.Update;
Это работает независимо от того, чтобы отключить формы перерисовки. Форма не будет перерисовываться до тех пор, пока ваше приложение не войдет в цикл сообщений в любом случае, поэтому отключить рисование и повторное включение формы в рамках одной процедуры, которая сама по себе не вызывает обработку сообщений, является пустой тратой времени.
Это может быть не только одновременная перекраска двух кнопок, но подлинная одновременная покраска двух отдельных элементов управления невозможна без использования многопоточного графического кода графического интерфейса, который, по моему мнению, выходит за рамки этой проблемы. Вызов обновления на двух кнопках таким образом будет как можно ближе одновременно, как вам нужно.
Ясно непроверенных (не работает и даже не компилировать) – Deltics
я использую WM_SETREDRAW в нескольких проектах, он прекрасно работает. Кроме того, компоненты VCL, которые имеют методы Begin/EndUpdate(), используют WM_SETREDRAW внутренне. –
В этом случае это не сработало ... * 1) * FALSE и TRUE являются недопустимыми параметрами для SendMessage() [Integer required] * 2) * После изменения параметров FALSE и TRUE на 0 и 1 соответственно, чтобы это выполняет компиляцию и работу по назначению, форма не перерисовывается в конце - кнопки остаются видимо «включенными», если/пока они не будут скрыты и тем самым вынуждены перекрасить * 3) *, даже если это сработало, попробуйте/окончательно определите * 4) *, даже если бы это сработало, все равно было бы бессмысленно из-за зависимости обработки сообщений для происходящей картины. – Deltics