首页 > 解决方案 > VBA Form.Move 方法(访问)- 不适用于拆分表单

问题描述

Form.Move 方法不适用于拆分表单

在我的 MS Access 2016 数据库中,我有很多以对话模式打开的表单。Access 主窗口没有选项卡。主窗口显示一个窗体,有时在转到不同的主窗体时会更改大小。对话框样式形成相对于主窗口的弹出窗口。

我使用 Form.Move 方法相对于 Access 主应用程序窗口的位置来定位和调整表单的大小。移动方法效果很好!但是, move 方法似乎对拆分表单没有任何作用。

我也尝试过 docmd.movesize ,因为它确实可以移动和调整拆分表格的大小。它也很好用,除了在我的情况下, docmd.movesize 相对于主监视器的左上角定位表单并且不能使用负数。“主监视器”是指在 Windows 显示设置中设置为主监视器的监视器。

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

我的数据库的一些用户使用 3 个监视器。他们将笔记本电脑用作主显示器,并将其放置在两个更大的显示器下方。笔记本电脑上方的任何桌面空间都具有负的“向下”位置值作为 DoCmd.MoveSize 应用的参数。Form.Move 方法可以很好地处理负位置,但它不适用于我的拆分表单。对我来说, DoCmd.MoveSize 在使用负值时会导致错误。当主监视器位于两个较大的监视器之间时,“右”值也可能为负。

这是我当前的表单设置。我很确定我已经尝试了每一种组合。

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 位置,该位置将落在主监视器上。

是否有任何解决方案可以将拆分表单移动/调整大小到具有负“向下”位置值的桌面位置?

提前感谢大家!

巴迪·马丁

标签: vbaformsms-accessmove

解决方案


推荐阅读