У меня есть программа VBA для загрузки вложений из почтового сообщения.
Я запускаю макрос (то есть «sub» в модуле), который выполняет «Form.Show» для запуска пользовательской формы. На пользовательской форме есть кнопка, чтобы начать загрузку. Модуль загрузки находится в коде модуля, а не в коде пользовательской формы.
Вот код, который я использую для кнопки:
Private Sub BTN_Download_Click()
Me.MousePointer = fmMousePointerHourGlass
Me.BTN_Download.Enabled = False
Utils.DownloadAttachments
Me.BTN_Download.Enabled = True
Me.MousePointer = fmMousePointerDefault
End Sub
Я пытаюсь представить пользователю хороший пользовательский интерфейс: временно отключить кнопку и показать песочные часы, когда операция находится в действии, а затем снова включить кнопку и восстановить указатель мыши по умолчанию после завершения.
Что происходит, GUI перестает отвечать на запросы, кнопка никогда не отключается, и я не вижу указатель песочных часов.
Я попытался переместить код GUI в Модуль (MyForm.MousePointer = ...). Я попытался создать два дополнительных Sub, «Busy» и «UnBusy», и вызвать его непосредственно из Sub выше - что работает немного лучше, но все же есть задержка, прежде чем GUI будет выглядеть «Busy» для пользователя.
Есть ли способ обеспечить обновление графического интерфейса?