#ms-access
Вопрос:
У меня есть форма, которая открывается в Microsoft Access. Форма открывается из меню. В этой форме есть элемент управления вкладками, который всегда открывается на одной странице, и на этой странице находятся четыре несвязанных элемента управления объектами, отображающих диаграммы. Когда форма открывается, эти диаграммы обновляются.
Какое событие я должен использовать, чтобы сообщить, когда эта форма впервые откроется, а затем, когда все диаграммы будут обновлены? Я пытаюсь поместить туда индикатор выполнения (я знаю, как сделать сам индикатор выполнения, я просто не знаю, каким будет правильное событие).
Комментарии:
1. Попробуйте событие Загрузки формы.
2. Спасибо, но это не сработало. Индикатор выполнения появился до появления формы, и невозможно определить, завершили ли элементы управления несвязанными объектами обновление диаграмм.
3. Такого события, как обновление и загрузка элементов управления, не происходит в фоновом режиме во время загрузки формы. Событие OnCurrent может быть самым близким, которое вы можете получить.
4. Я не был настроен оптимистично. Единственные индикаторы прогресса, которые я когда-либо видел, включали некоторую циклическую структуру кода. Доступ не поддерживает многопоточность. Я не понимаю, как процесс загрузки формы может передавать информацию о состоянии процессу индикатора выполнения. Что именно вы подразумеваете под «несвязанными элементами управления объектами» — OLEObject? — и с чего именно загружаются эти диаграммы?
5. Хотя в Access есть индикатор выполнения, который отображается при выполнении длинного запроса. На самом деле я не замечал этого для других занятий. Может быть, у меня нет других, которые были бы достаточно медленными.
Ответ №1:
Используйте Form_Open
в сочетании с некоторыми DoEvents
, чтобы на самом деле заставить вещи отображаться при выполнении.
Form_Open
это самое первое событие, которое должно произойти при открытии формы до загрузки каких-либо данных.
Если вы не сделаете DoEvents
это после установки индикатора выполнения, пользовательский интерфейс может не обновиться. По моему опыту, это не имеет значения для индикаторов выполнения, но широкое использование DoEvents
в длительно работающем коде никогда не повредит (среди прочего, позволяет использовать Ctrl Break для завершения кода).
Вы можете отключить индикатор Form_Current
выполнения, который должен срабатывать при загрузке записи, и использовать свойство (для которого установлено значение True
in Form_Open
и False
in Form_Current
), чтобы проверить, есть ли индикатор выполнения для удаления.