MS Access:从模块中调整对话框窗体的大小



我试图在对话框模式下打开一个窗体,然后使用模块中的DoCmd.MoveSize将其调整为所需大小。理想情况下,我希望这一切都能从上述模块运行。

当前表单已打开,但未调整大小。我猜这可能是因为在运行命令时表单尚未处于活动状态,或者是因为OpenForm命令中的acDialog阻止了它的执行。我认为我可以将MoveSize命令插入表单的OnlOad事件中,但我更希望在模块中拥有同样多的功能。有办法解决这个问题吗?比如,可能有某种方法可以等待窗体处于活动状态,或者有某种方法将命令从模块本身插入OnLoad事件?正如你所知,我对vba还不太熟悉。这是我正在做的一个小项目的一部分。感谢您的帮助。

一些示例代码如下:

这个不调整窗体大小:

Option Compare Database
Option Explicit
Public Function OpenFormDialog()
DoCmd.OpenForm "MsgBoxForm", acNormal, , , acFormAdd, acDialog
DoCmd.MoveSize , , , 9500

End Function

由于找不到表单,此操作引发错误:

Option Compare Database
Option Explicit
Public Function OpenFormDialog()
DoCmd.OpenForm "MsgBoxForm", acNormal, , , acFormAdd, acDialog
Forms.("MsgBoxForm").DoCmd.MoveSize , , , 9500

End Function

您可以在正常模式下打开表单,调整大小并使其成为模态。只需确保表单上的Modal属性为No.

With DoCmd
.OpenForm "MsgBoxForm", acNormal, , , acFormAdd, acNormal
.MoveSize , , , 9500
End With
Forms.MsgBoxForm.Modal = True

请记住,最后一条(模态(语句下面的任何代码仍将执行。如果您需要停止代码执行,那么您唯一的选择就是直接在Load()事件中调整大小。

就我个人而言,我认为Load()解决方案更好,您可以通过OpenArgs参数传递各种大小。

您应该在MsgBoxForm表单的form_open事件中使用docmd.movesize。

此外,通过执行docmd.openform,程序的控制流将转移到打开的表单,并且在关闭打开的表单之前,docmd.oopenform之后的语句将不会执行。

这就是MsgBoxForm不在docmd.openform.之后的表单集合中的原因

相关内容

  • 没有找到相关文章

最新更新