如何在MS Access表单上动态保持控件居中(相对位置)?

Dat*_*ter 5 ms-access access-vba

我正在使用Access 2013并且有一些控件(列表框,按钮等),我希望在调整窗体大小时将其作为一个组保持在一个窗体中.

锚定将无法实现我正在寻找的东西,因为我不想将控件锁定到顶部/底部/左/右.我希望他们留在中心.

在表单的resize事件上使用像me.mycontrol.left = myform.Width/2这样的代码只是在做我正在寻找的东西,因为它将各个控件对齐到中心.我希望控件组居中.

有没有办法做到这一点?

编辑:这是一个例子,可以使这更清楚.假设我有一个100 x 100的表格,上面有两个按钮.按钮高20个单位,间隔10个单位.他们有以下职位:

Button1.Top = 25(10个单位空间从45开始)Button2.Top = 55

如果表单大小调整为200 x 200,则控件将具有以下位置:

Button1.Top = 75(10单位空间从95开始)Button2.top = 105

理想情况下,我很乐意把它变成一个模块,我只需要传递一个表格,然后它将获取每个控件的原始位置并计算新的位置.

编辑2:

根据Krish的想法,使用我的真实代码尝试了一次失败的尝试:

Private Sub Form_Resize()

Dim resizeFactor As Double

resizeFactor = Me.WindowWidth / Me.Width

Me.lstModule.Left = Me.lstModule.Left * resizeFactor
Me.ctlSubform.Left = Me.ctlSubform.Left * resizeFactor
Me.Box6.Left = Me.Box6.Left * resizeFactor

End Sub
Run Code Online (Sandbox Code Playgroud)

Mar*_*kal 7

我认为锚定实际上就是答案.您只需在控件周围创建一个布局网格,并设置锚定,如下所示:

_____________________|___stretch down____|___________________
stretch across top___|___your controls___|stretch across top
_____________________|___stretch down____|___________________
Run Code Online (Sandbox Code Playgroud)

这样,您的控件将始终位于窗体/子窗体的中间.

编辑:截图

布局视图 表格视图

编辑:添加了有关边框的信息

添加边框可能会非常痛苦,但在某种程度上,这是可能的.您可以通过设置网格线颜色,将网格线样式设置为固定到按钮(默认为透明)并添加一些填充来完成此操作.在下面的示例中,我将LEFT,RIGHT和TOP的第一个按钮网格线样式设置为实心,并为这些边设置填充0.1".如果继续使用类似的方式,结果将如下所示:

设计视图 表格视图