Метод VBA Form.Move (Access) - не работает для разделенных форм - PullRequest
0 голосов
/ 29 января 2019

Метод Form.Move не работает для разделенных форм

В моей базе данных MS Access 2016 у меня есть много форм, которые открываются в диалоговом режиме.Главное окно доступа не имеет вкладок.Главное окно отображает одну форму и иногда меняет размеры при переходе на другую основную форму.Стиль диалогового окна всплывает относительно главного окна.

Я использую метод Form.Move для позиционирования и изменения размера форм относительно расположения главного окна приложения Access.Метод Move отлично работает!Однако метод перемещения, похоже, ничего не делает для разделенных форм.

Я также пробовал docmd.movesize, поскольку он перемещает и измеряет размер разделенных форм.Это также прекрасно работает, за исключением того, что в моей ситуации docmd.movesize позиционирует форму относительно верхнего левого угла главного монитора и не может использовать отрицательные числа.Под «Основным монитором» я подразумеваю монитор, который установлен в качестве основного монитора в настройках дисплея Windows.

DoCmd.MoveSize( _Right_, _Down_, _Width_, _Height_ )

Некоторые пользователи моей базы данных используют 3 монитора.Они используют свой ноутбук в качестве основного монитора и располагают его под двумя большими мониторами.Любая настольная недвижимость над своим ноутбуком имеет отрицательные значения местоположения * Down в качестве параметра для DoCmd.MoveSize для применения.Метод Form.Move прекрасно обрабатывает отрицательные места, но он не работает для моих разделенных форм.Для меня DoCmd.MoveSize вызывает ошибку при использовании отрицательных значений.Значение " Right " также может быть отрицательным, если основной монитор находится между двумя большими мониторами.

Вот мои текущие настройки формы.Я почти уверен, что перепробовал каждую комбинацию.

Pop Up = No
Modal = No
Default View = Split Form
Auto Center = Yes
Auto Resize = No
Fit to Screen = Yes
Border Style = Sizeable

Формы открываются с помощью этого кода, который отменяет некоторые настройки выше.

DoCmd.OpenForm "frmWorkGroupList", , , , , acDialog

Код размера формы

DoCmd.MoveSize xPosMax, yPosMax, vWidth, vHeight
Me.Move Left:=xPosMax, Top:=yShiftTwips, Width:=vWidth, Height:=vHeight

Я искал хорошее решение в течение многих часов и перепробовал все, что мог придумать.Единственное решение, которое я могу найти в Интернете, - это воссоздать мои формы в подформы внутри основных форм, чтобы имитировать разделенную форму.Я не хочу этого делать.Я хочу, чтобы разделенные формы работали, если это возможно.

В настоящее время я использую DoCmd.MoveSize с проверкой на отрицательные значения.Если для x и / или y есть какие-либо отрицательные значения, я перемещаюсь в положение по умолчанию x и y, которое будет отображаться на главном мониторе.

Существуют ли решения, которые будут перемещать / изменять размер разделенных форм в местоположения рабочего стола, которыеимеют отрицательные значения местоположения " Down "?

Спасибо всем заранее!

Бадди Мартин

...