Как скрыть или скрыть элемент управления MS Access ActiveX Web Browser? - PullRequest
0 голосов
/ 29 мая 2019

У меня есть база данных, в которой пользователи вводят значение в Textbox1 на форме; Форма также имеет элемент управления ActiveX Web Browser (acxWebBrowser1), плюс еще одно пустое Textbox2 и, наконец, командную кнопку. После того, как пользователь введет текст в Textbox1 и нажмет командную кнопку, код VBA перейдет на определенную веб-страницу в acxWebBrowser1, введите значение Textbox1 в форму веб-страницы и затем получит результат на веб-странице в acxWebBrowser1. Затем результат захватывается кодом VBA и вводится в Textbox2 в форме базы данных.

Что мне нужно сделать, это спрятать элемент управления веб-браузера ActiveX, чтобы (а) не допустить возни пользователя с веб-страницей и (б) предотвратить беспорядок и отвлечение веб-браузера ActiveX, поскольку VBA Код выполняет все необходимые взаимодействия с веб-страницей за кулисами.

Проблема в том, что я не могу заставить acxWebBrowser1 оставаться скрытым за прямоугольным элементом управления в форме, потому что браузер автоматически перемещается в верхнюю часть стека элементов управления. Если я уменьшу размер элемента управления acxWebBrowser1 до очень маленького размера, веб-страница не будет работать должным образом. Если я сделаю управление веб-браузером невидимым, тогда код не сможет получить нужные значения. Я не могу использовать подход POST, чтобы избежать использования веб-браузера. (Возможно, я ошибаюсь из-за того, что не могу использовать POST - может, кто-то подскажет мне, как это сделать, если это так.)

Как мне спрятать или положить что-нибудь поверх элемента управления веб-браузера?

1 Ответ

0 голосов
/ 29 мая 2019

Три часа спустя меня осенило, как выполнить скрытие веб-браузера ActiveX, но все же сделать его доступным для кода VBA.Просто: не обновляйте экран при запуске кода для доступа к веб-браузеру ActiveX и используйте свойство .Visible, чтобы «показывать» элемент управления браузером, когда VBA должен получить к нему доступ (но он не будет виден пользователю, если экранобновление отключено), а затем скрыть элемент управления браузером, когда VBA завершит доступ к нему.

Вот код, который я использовал для этого:

Application.Echo False  'turn off screen updating
Me.acxWebBrowser1.Visible = True  'make web browser control "visible" to VBA code

     {do stuff, like:  process web page}

Me.btnClickMe.SetFocus  'set focus on the button so we can hide the web browser control
Me.acxWebBrowser1.Visible = False  'make web browser invisible so user is not distracted
Application.Echo True  'turn screen updating back on
Me.Refresh  'refresh the screen; this is probably not necessary

Просто будь

  • абсолютно уверен в включить обновление экрана (эхо) обратно на

Вы должны отправить любую обработку ошибок на код, который устанавливает Application.Echo True, иначе вы не сможете ничего увидеть или сделать, если кодпадает после установки echo на False.

...